如何在TensorFlow Keras中指定GRU模型的隐藏循环层数?
GRU模型结构理解与添加隐藏层方法
首先纠正你的理解:你这段代码没有单独的“输入层”,Keras中input_shape是用来指定输入数据的维度(序列长度+特征数),第一个GRU(units=64)就是第一个循环隐藏层,第二个GRU(units=64)是第二个循环隐藏层,最后Dense(4)是输出层。所以整体结构是:
- 2个GRU隐藏层(各64个神经元)
- 对应两层Dropout(比例0.2)
- 1个全连接输出层(4个神经元)
怎么添加更多循环隐藏层?
要添加额外的GRU隐藏层,注意除了最后一个GRU层之外,前面所有新增的GRU层都必须设置return_sequences=True——因为循环层之间需要传递完整的序列时序信息,只有最后一个GRU层后面接全连接层时,才不需要返回完整序列(默认return_sequences=False)。
比如添加第三个GRU层的代码示例:
def create_model(units, m): model = Sequential() # 第一个GRU层:返回完整序列,供下一层GRU使用 model.add(m(units=units, return_sequences=True, input_shape=[X_train.shape[1], X_train.shape[2]])) model.add(Dropout(0.2)) # 第二个GRU层:返回完整序列,供下一层GRU使用 model.add(m(units=units, return_sequences=True)) model.add(Dropout(0.2)) # 第三个GRU层:不返回完整序列,因为后面接全连接层 model.add(m(units=units)) model.add(Dropout(0.2)) model.add(Dense(4)) model.compile(loss='mse', optimizer=MyOptimizer(learning_rate=0.001)) return model model_gru = create_model(64, GRU)
如果需要更多层,按照这个逻辑重复添加model.add(m(units=units, return_sequences=True)) + Dropout即可,只保留最后一个GRU层不设置return_sequences(或设为False)。
内容的提问来源于stack exchange,提问作者DaliMidou
相关产品推荐
相关产品推荐

