使用静态rnn获取TypeError:无法将值None转换为TensorFlow DType

时间:2019-10-05 10:22:03

标签: tensorflow keras tf.keras

首先我的一些代码:

...
fc_1 = layers.Dense(256, activation='relu')(drop_reshape)  
bi_LSTM_2 = layers.Lambda(buildGruLayer)(fc_1)
...


def buildGruLayer(inputs):

gru_cells = []

gru_cells.append(tf.contrib.rnn.GRUCell(256))
gru_cells.append(tf.contrib.rnn.GRUCell(128))
gru_layers = tf.keras.layers.StackedRNNCells(gru_cells)

inputs = tf.unstack(inputs, axis=1)

outputs, _ = tf.contrib.rnn.static_rnn(
    gru_layers,
    inputs,
    dtype='float32')

return outputs

运行static_rnn时出现的错误是:

raise TypeError("Cannot convert value %r to a TensorFlow DType." % type_value)
TypeError: Cannot convert value None to a TensorFlow DType.

进入图层的形状为(64,238,256)。

任何人都知道可能是什么问题。我已经用Google搜索了错误,但找不到任何东西。非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果仍然有人需要解决方案。这是因为您需要为GRUCell指定dtype,例如tf.float32

其默认值为None,在文档中默认为输入数据的第一维(即批处理维,在tensorflow中为?或None)

从中检查dtype参数: https://www.tensorflow.org/api_docs/python/tf/compat/v1/nn/rnn_cell/GRUCell