我已经阅读了很多关于这一点的帖子。它们彼此不一致,每个答案似乎都有不同的解释,所以我想根据我对所有答案的分析来提问。
正如 Keras RNN文档所述,输入形状始终采用这种形式(batch_size, timesteps, input_dim)。我对此有点困惑,但我想,虽然不确定,但input_dim始终为 1 而timesteps取决于您的问题(也可能是数据维度)。这大致正确吗?
这个问题的原因是我在尝试将 的值更改input_dim为我的数据集维度时总是出错(因为 input_dim 听起来像那样!!),所以我做了一个假设,input_dim表示 LSTM 的输入向量的形状一个时间。我又错了吗?
C = C.reshape((C.shape[0], C.shape[1], 1))
tr_C, ts_C, tr_r, ts_r = train_test_split(C, r, train_size=.8)
batch_size = 1000
print('Build model...')
model = Sequential()
model.add(LSTM(8, batch_input_shape=(batch_size, C.shape[1], 1), stateful=True, activation='relu'))
model.add(Dense(1, activation='relu'))
print('Training...')
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(tr_C, tr_r,
batch_size=batch_size, epochs=1,
shuffle=True, validation_data=(ts_C, ts_r))
Run Code Online (Sandbox Code Playgroud)
谢谢!
实际上,input_dim是一次输入向量的形状。换句话说,input_dim是输入的编号features。
不过,它不一定是 1。如果您使用多个 var,它可以是任意数字。
假设您有 10 个序列,每个序列有 200 个时间步长,而您只测量一个温度。然后你有一个功能:
input_shape = (200,1) -- 注意这里忽略了批量大小(序列数) batch_input_shape = (10,200,1)-- 仅在特定情况下,例如stateful = True,您将需要批量输入形状。现在假设您不仅要测量温度,还要测量压力和体积。现在您已经获得了三个输入功能:
input_shape = (200,3) batch_input_shape = (10,200,3) 换句话说,第一维是不同序列的数量。第二个是序列的长度(沿时间测量多少次)。最后一个是每次有多少个变量。
| 归档时间: |
|
| 查看次数: |
3757 次 |
| 最近记录: |