行时出现这个错误:RuntimeError: Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the same。
主要是mode没有把mode没有调用cuda,而input却调用了,造成了不统一。这两个地方要保持一致。下面举个同时调用cuda的例子
autoencoderModel = autoencoderModel.cuda() 1,声明mode时,调用cuda
criterion = nn.MSELoss()
optimizer = torch.optim.Adam(autoencoderModel.parameters(), lr=LEARNING_RATE)
#=======================================================================================================================
#=======================================================================================================================
# Model Training and Saving
bestLoss = 1
for epoch in range(EPOCHS):
autoencoderModel.train()
if epoch % 50 == 0 and epoch > 0:
optimizer.param_groups[0]['lr'] = optimizer.param_groups[0]['lr'] * 0.1
for i, autoencoderInput in enumerate(train_loader):
autoencoderInput = autoencoderInput.cuda()2,input时,调用cuda
autoencoderOutput = autoencoderModel(autoencoderInput)
loss = criterion(autoencoderOutput, autoencoderInput)
optimizer.zero_grad()
loss.backward()
optimizer.step()
if i % PRINT_RREQ == 0:
print('Epoch: [{0}][{1}/{2}]\t' 'Loss {loss:.4f}\t'.format(epoch, i, len(train_loader), loss=loss.item()))