【问题标题】:Dimension Mismatch in LSTM KerasLSTM Keras 中的尺寸不匹配
【发布时间】:2016-11-01 12:56:43
【问题描述】:

我想创建一个可以添加两个字节的基本 RNN。这是输入和输出,预计是简单的加法

X = [[0, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0]]

X1 = 00101111X2 = 01110010

Y = [1, 0, 1, 0, 0, 0, 0, 1]

我创建了以下顺序模型

model = Sequential()
model.add(GRU(output_dim = 16, input_length = 2, input_dim = 8))
model.add(Activation('relu'`))
model.add(Dense(2, activation='softmax'))
model.compile(loss = 'binary_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
model.summary()

我得到的错误是一些东西

预计 lstm_input_1 有 3 个维度,但得到了形状为 (8L, 2L) 的数组

因此,如果我通过将 X 更改为

来增加尺寸
[[[0 0]] [[1 1]] [[1 1]] [[1 0]] [[0 0]] [[1 0]] [[0 1]] [[1 0]]]

然后错误变为

预计lstm_input_1 的形状为(None, 8, 2),但得到的数组形状为(8L, 1L, 2L)

【问题讨论】:

    标签: python deep-learning keras lstm


    【解决方案1】:

    Keras 作为输入需要 3D 数据,如错误所述。它是样本、时间步长、特征。由于您有 (8L, 2L) Keras 将其视为 2D - [样本,特征]。为了修复它,请执行以下操作

    def reshape_dataset(train):
        trainX = numpy.reshape(train, (train.shape[0], 1, train.shape[1]))
        return numpy.array(trainX)
    
    x = reshape_dataset(your_dataset)
    

    现在X 应该是8L,1,2L,即[样本、时间步长、特征] - 3D

    【讨论】:

      【解决方案2】:

      将 X 更改为 [[[0, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0]]],使其形状为 (1, 8, 2)

      【讨论】:

        【解决方案3】:

        在 Keras 中,顺序模型需要一个形状为 (batch_size, sequence_length, input_dimension) 的输入。我怀疑您需要更改输入数组的最后两个维度。请记住,批次维度没有明确定义。

        【讨论】:

          猜你喜欢
          • 2017-02-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-01-18
          • 1970-01-01
          相关资源
          最近更新 更多