pytorch loss = criterion(outputs, y) ,y有多个值怎么办?
就是outputs输出1个值,y有几个值,只要outputs等于y中1个值就行,loss = criterion(outputs, y)怎么写?
部分代码如下:
for epoch in range(num_epochs):
train_loss = []
#开始遍历加载器中的数据
for batch, data in enumerate(train_loader):
#batch 为数字 表示已经进行了第几个batch
#data 为一个二元组,分别存储了一条数据记录的输入和标签
#每个数据的第一个维度都是 batch_size = 30 的数组
lstm.train() #标志LSTM处于训练态,Dropout 开始起作用
init_hidden = lstm.initHidden(len(data[0])) #初始化LSTM的隐含单元变量
optimizer.zero_grad()
x,y = Variable(data[0]), Variable(data[1]) #从数据中提炼出输入和输出对
if use_cuda:
x = x.cuda()
y = y.cuda()
outputs = lstm(x, init_hidden) #输入LSTM,产生输出outputs
loss = criterion(outputs, y) #带入损失函数并产生loss
loss.backward() #反向传播
optimizer.step() #更新梯度
if use_cuda:
loss = loss.cpu()
train_loss.append(loss.data.numpy()) #记录loss
大神们,这个怎么解决?
大神们,这个怎么解决?
无解吗?