我想学习如何用AI制作聊天机器人。我找到了这个tutorial。我使用一个小文本文件来检查我的Python脚本是否工作,现在我想使用一个更大的文本输入。文件内容如下:
This compiler has no dedicated message for sign compare.
Code lines with implicit cast due to sign conversion usually generate an informational message "C0005 (I)
Precision lost".Renesas sign -compare equivalent
在第一步,我执行预处理,删除停止词,小写等。最后,我得到了文件第2行和第3行的列表,如下所示:
['code', 'line', 'implicit', 'cast', 'due', 'sign', 'conversion', 'usually', 'generate', 'informational', 'message', '``', 'c0005']
接下来,我执行标记化,结果如下:
{'<OOV>': 1, 'sign': 2, 'message': 3, 'compiler': 4, 'dedicated': 5, 'compare': 6, 'code': 7, 'line': 8, 'implicit': 9, 'cast': 10, 'due': 11, 'conversion': 12, 'usually': 13, 'generate': 14, 'informational': 15, '``': 16, 'c0005': 17, 'precision': 18, 'lost': 19, "''": 20, '.renesas': 21, '-compare': 22, 'equivalent': 23}
然后,我有序列和填充序列,输出如下:
[[4, 5, 3, 2, 6], [7, 8, 9, 10, 11, 2, 12, 13, 14, 15, 3, 16, 17], [18, 19, 20, 21, 2, 22, 23]]
并填充:
[[ 4 5 3 2 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0]
[ 7 8 9 10 11 2 12 13 14 15 3 16 17 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0]
[18 19 20 21 2 22 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0]]
最后,我使用这个命令来训练模型:
training_data = padded_sequences[:training_size]
training_labels = padded_sequences[:training_size]
history = model.fit(training_data, training_labels,batch_size=1, epochs=num_epochs, verbose=3)
但我收到以下错误:
ValueError: labels.shape must equal logits.shape except for the last dimension.
Received: labels.shape=(100,) and logits.shape=(1, 100)
谁能解释一下这个错误是什么,并帮助我修复它?我认为数组大小有问题,但我不能确切地理解问题是什么。
你也可以找到所有的Python代码here。
1条答案
按热度按时间juud5qan1#
我认为这是一个简单的问题,它可以通过为标签提供正确的形状来解决(请提供training_data和training_labels的形状),所以我可以看到你在training_labels中缺少了batch(batch_size=1)维度,这可以通过以下方式完成:
所以我会试试这个,看看它是否能解决这个问题。
否则请始终提供您的模型摘要阅读层和他们的形状,这可以通过写
编辑:我从你的代码中打印了模型摘要(它与你在评论中给出的完全不同):
正如你所看到的,你的模型的输出必须是100,而你的标签现在是20,所以你会再次检查这个。