如何解决即使将模型和数据存储到GPU后,算法也无法在GPU上运行我想念什么?
您可以在下面找到我的代码的培训部分:
device = torch.device(‘cuda’ if torch.cuda.is_available() else ‘cpu’)
注意:当我检查torch.cuda.is_available时,我会收到True
创建CNN模型后,我写道:
model = model.to(device)
培训科:
import time
start_time = time.time()
epochs = 3
#Limits on numbers of batches if you want train faster(Not mandatory)
max_trn_batch = 800 # batch 10 image --> 8000 images total
max_tst_batch = 300 # batch 10 image --> 3000 images total
train_losses = []
test_losses = []
train_correct = []
test_correct = []
for i in range(epochs):
trn_corr = 0
tst_corr = 0
for b,(X_train,y_train) in enumerate(train_loader):
X_train,y_train = X_train.to(device),y_train.to(device)
#optinal limit number of batches
if b == max_trn_batch:
break
b = b + 1
y_pred = model(X_train)
loss = criterion(y_pred,y_train)
predicted = torch.max(y_pred.data,1)[1]
batch_corr = (predicted == y_train).sum()
trn_corr = trn_corr + batch_corr
optimizer.zero_grad()
loss.backward()
optimizer.step()
if b%200 == 0:
print('Epoch: {} Loss: {} Accuracy: {}'.format(i,loss,trn_corr.item()*100/(10*b)))
train_losses.append(loss)
train_correct.append(trn_corr)
#test set
with torch.no_grad():
for b,(X_test,y_test) in enumerate(test_loader):
X_test,y_test = X_test.to(device),y_test.to(device)
#Optional
if b==max_tst_batch:
break
y_val = model(X_test)
predicted = torch.max(y_val.data,1)[1]
batch_corr = (predicted == y_test).sum()
tst_corr = tst_corr + batch_corr
loss = criterion(y_val,y_test)
test_losses.append(loss)
test_correct.append(tst_corr)
total_time = time.time() - start_time
print(f’Total Time: {total_time/60}) minutes’)
在培训期间,我正在检查CPU和GPU性能,CPU%1时CPU工作%100。
注意:当我将CPU用作设备时,算法花费了13分钟,而当我将GPU用作设备时,算法花费了7分钟,因此似乎没有什么改善,但是在培训期间我看不到任务管理器上的gpu利用率。
注2:参数
ConvolutionalNetwork(
(conv1): Conv2d(3,6,kernel_size=(3,3),stride=(1,1))
(conv2): Conv2d(6,16,1))
(fc1): Linear(in_features=46656,out_features=120,bias=True)
(fc2): Linear(in_features=120,out_features=84,bias=True)
(fc3): Linear(in_features=84,out_features=2,bias=True)
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。