【发布时间】:2018-06-23 23:18:51
【问题描述】:
我正在处理的问题是二进制分类。我有大约 150 个序列,其中每个序列有 130000 个时间步,其中每个时间步有 2 个特征,形状 =(1,130000,2)。这些序列中的每一个都被标记为“1”或“0”。我想训练一个 lstm 网络,最后,给它一个 130000 个时间步长的序列,每个时间步长有 2 个特征,将预测“1”或“0”。因此,我心中的问题是“多对一”对吗?
1) 如果我保留这些序列中的 120 个用于训练,其余 30 个用于验证,那么模型的参数数量应该大致类似于 120x130000x2=31,200,000 个参数吗? 例如一个具有约 4000 个单元的 LSTM 层?
2) 网络应该是有状态的?与否
我认为的模型是这样的:
model = Sequential()
model.add(LSTM(units=4000,batch_input_shape=(1, 130000,2),return_sequences=False,stateful=True,
kernel_initializer='RandomNormal'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['accuracy'])
history = model.fit(X_train, Y_train,validation_data=(X_test, Y_test),shuffle=False, epochs=5, batch_size=1, verbose=1)
对这种方法有什么建议吗?我的想法是否正确?
此外,这个 LSTM 可以使用来自 Keras 的 multi_gpu_model() 在 4 gpus 中并行训练吗?
我应该有更多的样本和更少的每个样本的时间步长吗?
【问题讨论】:
标签: tensorflow neural-network keras lstm