【发布时间】:2018-07-25 08:08:01
【问题描述】:
我想使用 tensorflow 的 tf.nn.dynamic_rnn 函数来创建 RNN,但它允许我只为我的一个层设置隐藏大小。
这是我的代码:
self._Input=tf.placeholder(tf.float64,shape=(None,self._time_size,self._batch_dim),name='input')
self._Expected_o=tf.placeholder(tf.float64,shape=(None,self._time_size,self._cell_output_size),name='Expected_o')
#creation of the network
initializer = tf.random_uniform_initializer(-1, 1)
cell = tf.nn.rnn_cell.GRUCell(self._hidden_size,kernel_initializer=initializer)
rnn_cells = tf.nn.rnn_cell.MultiRNNCell([cell] * self._num_layer)
# network
self._output, out_state = tf.nn.dynamic_rnn(cell=rnn_cells,inputs= self._Input, dtype=tf.float64)
只要我的 hidden_size 值与输入占位符的最后一个维度相同,即_batch_dim,一切正常。
但是当它不同时,我总是收到以下错误消息:
ValueError: 尺寸必须相等,但为 8 和 X 'rnn/while/rnn/multi_rnn_cell/cell_0/cell_0/gru_cell/MatMul_2'(操作: 'MatMul') 输入形状:[?,Y], [X,Y]。
其中X 是我为hidden_size + 1 设置的值,Y 是hidden_size*2 的值。我尝试了很多hidden_size 的值,这两个数字X 和Y 每次都会出现。消息错误表示在调用tf.rnn.dynamic_rnn时发生错误。
【问题讨论】:
标签: python tensorflow machine-learning lstm recurrent-neural-network