我正在使用 TensorFlow 编写一个 LSTM,该 LSTM 根据长度为 10 的先前字符字符串(恰好对应于方向)预测布尔目标,即 URDDLRUDUD。
当我将tf.string
张量传递给tf.nn.dynamic_rnn
:
multi_rnn_cell = tf.contrib.rnn.MultiRNNCell(
lstm_cells, state_is_tuple=True)
output_data, _ = tf.nn.dynamic_rnn(
multi_rnn_cell,
tf.reshape(input_layer, (batch_size, 10, 1)),
initial_state=lstm_layers.zero_state(
batch_size=batch_size,
dtype=tf.string))
我收到一个错误:
ValueError: dtype must be convertible to float. dtype: <dtype:
'string'>, column_name: sequence
似乎输入tf.nn.dynamic_rnn
应该是一个嵌入值 - 尽管我不想传递整个长度为 10 的单词的嵌入,因为我希望 LSTM 是基于字符的。
设计和传递输入到基于字符的 LSTM 的正确方法是什么?
您需要将字符编码为 int 值
U 0
R 1
L 2
D 3
您的输入应该是:
[[0,1,2,3,2,2,3,1],[0,1,2,1,2,1,3,1]...]
并添加一个嵌入层(使用tf.contrib.layers.embed_sequence嵌入输入数据)并将编码数据输入您的 lstm 单元格。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句