我正在尝试使用tensorflow和lstm在kaggle创建一个配方生成器。但我完全陷入了与角钱相关的问题。有人能指出我正确的方向吗?
非常感谢!
答案 0 :(得分:1)
我认为问题在于
training_batches[0][1]
是一个列表而不是numpy.array,你应该相应地修改create_datasets ......
答案 1 :(得分:1)
以下是您在代码中使用的seq2seq.sequence_loss(logits, targets, weights)
实施的摘录:
with ops.name_scope(name, "sequence_loss", [logits, targets, weights]):
num_classes = array_ops.shape(logits)[2]
logits_flat = array_ops.reshape(logits, [-1, num_classes])
targets = array_ops.reshape(targets, [-1])
if softmax_loss_function is None:
crossent = nn_ops.sparse_softmax_cross_entropy_with_logits(
labels=targets, logits=logits_flat)
我相信您看到的错误源于该代码中的最后一行。错误消息不言自明:
InvalidArgumentError:logits和label必须首先相同 维度,得到logits形状[8,6714]和标签形状[2]
即。 logits_flat
和targets
的第一维尺寸必须相同。这会直接转换为您对seq2seq.sequence_loss
的输入:targets
和logits
变量的前两个维度必须相等。所以,要么你没有为这两个变量使用相同数量的批次,要么以某种方式改变你的序列长度(虽然这会很奇怪)。