Neural network RNN';我们在凯拉斯上跑?

Neural network RNN';我们在凯拉斯上跑?,neural-network,keras,batch-processing,recurrent-neural-network,rnn,Neural Network,Keras,Batch Processing,Recurrent Neural Network,Rnn,我正在阅读他们网站上的Keras文档([),我注意到他们对批次的定义是,他们并行运行批次中的每个样本。对于几乎任何类型的神经网络,这都是完全可以接受的,但如果我运行的RNN的stateful设置为默认值False,这是否意味着我的每个样本的隐藏状态都被重置 我的印象是,在对权重进行更新之前,每个批都是按顺序运行的,因此,隐藏状态的唯一损失是当批更改时(因为我将stateful设置为False) 我的理解错了吗?每个样本都是一个单独的序列。而状态(序列处于当前时间步的状态)仅对每个序列单独有意义

我正在阅读他们网站上的Keras文档([),我注意到他们对批次的定义是,他们并行运行批次中的每个样本。对于几乎任何类型的神经网络,这都是完全可以接受的,但如果我运行的RNN的stateful设置为默认值False,这是否意味着我的每个样本的隐藏状态都被重置

我的印象是,在对权重进行更新之前,每个批都是按顺序运行的,因此,隐藏状态的唯一损失是当批更改时(因为我将stateful设置为False)


我的理解错了吗?

每个样本都是一个单独的序列。而状态(序列处于当前时间步的状态)仅对每个序列单独有意义

一个序列不能影响另一个序列的状态

因此,批处理中的每个序列都有一个并行状态

在有状态层中,这些并行状态将保持不变(直到您这样说,序列才结束)


这里还有另一个相关的问题:

如果我不定义一个时间步(窗口),那么Keras将如何处理该批?我不确定你称之为窗口的内容。数据的形状必须是
(BatchSize,TimeSteps,FeaturesPerStep)
。状态由TimeSteps.model.add更新(LSTM(32,input_shape=(588425,26),return_sequences=True))model.add(densite(1))model.compile(loss='mean_squared_error',optimizer='adam',metrics='accurity'])filepath=“model_check-{epoch:02d}-{loss:.4f}.hdf5”checkpoint=ModelCheckpoint(filepath,monitor='loss',verbose=1,save_best_only=True,mode='min')callbacks\u list=[checkpoint]model.fit(df_矩阵,y_矩阵,历代=5,批量大小=100000,详细=2)嗯,格式化在那里不起作用。但基本上,我把batchsize放在modelfit的最后,而不是更早地将数据输入到模型本身。它似乎在运行。时间步是整个数据流,我正在将其切割成100k间隔。输入数据的形状是什么?如果是
(1588425,26)
您只有一个样本。在这种情况下,您的批量大小将不会生效,因为它始终为1。您有一个样本,时间步长为588425。