Trying to share variable rnn/multi_rnn_cell/cell_0/basic_lstm_cell/kernel 解决方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wobeatit/article/details/79599667

       放浪了一个寒假,之前学的深度学习知识都快忘完了,听从老师的建议,开始学习tensorflow框架的使用顺带着梳理一下常用的深度学习知识。关于tensorflow的学习,我想向大家安利一本好书《Tensorflow 实战Google深度学习框架》,不得不说这本书真的是良心书籍,虽然可能tensorflow版本更迭导致书中一些代码需要更改,不过整体上来说该书从易到难,循次渐进,总结得很好!

      于是撸着代码阅读书籍学得正嗨时,在rnn+lstm这一块代码的复现时报错:

Trying to share variable rnn/multi_rnn_cell/cell_0/basic_lstm_cell/kernel, but specified shape (60, 120) and found shape (40, 120).  

顺带着还附带送了一串的什么 File 相关的问题,反正问题看着可就头大...

对于这种问题,自然需要度娘+google搜,一搜就有眉目了,原来是当构建多层lstm时由于使用的都是一个lstm就会报错上述错误,先附上错误代码:

#使用多层的lstm结构
    lstm_cell = tf.contrib.rnn.BasicLSTMCell(HIDDEN_SIZE, state_is_tuple=True)
    cell = tf.contrib.rnn.MultiRNNCell([lstm_cell] * NUM_LAYERS)

再附上我更正后的代码:

#使用多层的lstm结构
    #lstm_cell = tf.contrib.rnn.BasicLSTMCell(HIDDEN_SIZE, state_is_tuple=True)
    stack_rnn = []
    for i in range(NUM_LAYERS):
        stack_rnn.append(tf.contrib.rnn.BasicLSTMCell(HIDDEN_SIZE, state_is_tuple=True))
    cell = tf.contrib.rnn.MultiRNNCell(stack_rnn, state_is_tuple = True) 

其实本质上就是每层都新建一个lstm Cell,虽然规格都是相同的,但是不能同一个lstm多层复用。

现在再次运行代码,问题成功解决!


猜你喜欢

转载自blog.csdn.net/wobeatit/article/details/79599667
今日推荐