【发布时间】:2016-10-23 13:06:01
【问题描述】:
使用 Tensorflow seq2seq 教程代码,我正在创建一个基于字符的聊天机器人。我不使用词嵌入。我有一组字符(字母和一些标点符号)和特殊符号,如 GO、EOS 和 UNK 符号。
因为我没有使用词嵌入,所以我使用标准的tf.nn.seq2seq.basic_rnn_seq2seq()seq2seq 模型。但是,我对 encoder_inputs 和 decoder_inputs 应该有什么形状感到困惑。它们应该是一个整数数组,对应于字母数组中字符的索引,还是应该先将这些整数转换为 one-hot 向量?
一个 LSTM 单元有多少个输入节点?你能具体说明吗?因为我猜在我的情况下,LSTM 单元应该为字母表中的每个字母都有一个输入神经元(因此是 one-hot 向量?)。
另外,您必须在构造函数tf.nn.rnn_cell.BasicLSTMCell(size) 中传递的 LSTM“大小”是多少?
谢谢。
附录:这些是我正在尝试修复的错误。
当我使用以下代码时,根据教程:
for i in xrange(buckets[-1][0]): # Last bucket is the biggest one.
self.encoder_inputs.append(tf.placeholder(tf.int32, shape=[None], name="encoder{0}".format(i)))
for i in xrange(buckets[-1][1] + 1):
self.decoder_inputs.append(tf.placeholder(tf.int32, shape=[None], name="decoder{0}".format(i)))
self.target_weights.append(tf.placeholder(dtype, shape=[None], name="weight{0}".format(i)))
然后运行self_test() 函数,我得到错误:
ValueError: Linear is expecting 2D arguments: [[None], [None, 32]]
然后,当我将上述代码中的形状更改为 shape=[None, 32] 时,我收到此错误:
TypeError: Expected int32, got -0.21650635094610965 of type 'float' instead.
【问题讨论】:
标签: machine-learning tensorflow recurrent-neural-network lstm