【问题标题】:Gluon MXNet error when forward with LSTMCell使用 LSTMCell 转发时出现 Gluon MXNet 错误
【发布时间】:2018-08-01 07:30:48
【问题描述】:

使用 mxnet 1.1, 当我尝试在以下网络上运行 net(data) 时:

net = gluon.nn.HybridSequential()
    with net.name_scope():
        net.add(gluon.nn.Embedding(input_dim=MAX_EVENT_INDEX + 1, output_dim=EMBEDDING_VECTOR_LENGTH))
        net.add(gluon.nn.Conv1D(channels=conv1D_filters, kernel_size=conv1D_kernel_size, activation='relu'))
        net.add(gluon.nn.MaxPool1D(pool_size=max_pool_size, strides=2))
        net.add(gluon.rnn.LSTMCell(100))
        net.add(gluon.rnn.DropoutCell(dropout_rate))
        net.add(gluon.rnn.LSTMCell(100))
        net.add(gluon.rnn.DropoutCell(dropout_rate))
        net.add(gluon.rnn.LSTMCell(100))
        net.add(gluon.rnn.DropoutCell(dropout_rate))
        net.add(gluon.nn.Flatten())
        net.add(gluon.nn.Dense(1, activation="sigmoid"))
    net.hybridize()

错误:forward() 缺少 1 个必需的位置参数:'states'

当我将gluon.nn.Sequential()net.add(gluon.rnn.LSTM(100, dropout=dropout_rate)) 一起使用时,一切正常

谢谢

【问题讨论】:

    标签: deep-learning lstm mxnet


    【解决方案1】:

    如果您查看 LSTMCell 的实现,您会注意到,hybrid_forward 需要明确的 states 参数。 LSTM 类,使用它的base class implementation 不需要states 参数(它可以是None)。因此,从一个切换到另一个肯定会对您有所帮助。

    LSTM 类大于LSTMCell。它实际上在内部使用LSTMCell,但它还在其之上添加了额外的功能。例如,您可以将LSTM 指定为多层或双向,其中LSTMCell 本质上只是一堆用于计算门、c 和 h 的 LSTM 相关公式。

    【讨论】:

      猜你喜欢
      • 2018-05-06
      • 2018-07-19
      • 1970-01-01
      • 2021-10-31
      • 2018-06-08
      • 2013-06-25
      • 1970-01-01
      • 2011-03-06
      • 1970-01-01
      相关资源
      最近更新 更多