【发布时间】:2021-10-06 14:51:21
【问题描述】:
我最近问了这个问题的一部分。我正在构建一个聊天机器人,并且有一个功能会产生问题。函数如下:
def variable_from_sentence(sentence):
vec, length = indexes_from_sentence(sentence)
inputs = [vec]
lengths_inputs = [length]
if hp.cuda:
batch_inputs = Variable(torch.stack(torch.Tensor(inputs),1).cuda())
else:
batch_inputs = Variable(torch.stack(torch.Tensor(inputs),1))
return batch_inputs, lengths_inputs
但是当我尝试运行聊天机器人代码时,它给了我这个错误:
stack(): 参数“张量”(位置 1)必须是张量的元组,而不是张量
出于这个原因,我修复了这样的功能:
def variable_from_sentence(sentence):
vec, length = indexes_from_sentence(sentence)
inputs = [vec]
lengths_inputs = [length]
if hp.cuda:
batch_inputs = torch.stack(inputs, 1).cuda()
else:
batch_inputs = torch.stack(inputs, 1)
return batch_inputs, lengths_inputs
但它仍然给我错误,错误是这样的:
TypeError:预期张量作为参数 0 中的元素 0,但得到了列表
在这种情况下我现在该怎么办?
【问题讨论】:
-
请不要复制您自己的question。您已经在那里收到了答复,但没有等待对您的评论进行后续处理。相反,您应该取消删除并编辑最初的帖子,解释提供的答案不适用的内容。
-
@Ivan 对不起,伙计。我还在学习这个社区的规则。你能在这里解释一下解决方案吗?
-
vec和length有哪些类型? -
@Ivan 长度必须是整数,我不确定 vec 。
-
@Ivan 我查过了。它们都是整数