Tensorflow中RNN,LSTM模型不想固定batch_size


这是最开始模型的定义,由于这里对init_state进行了zero初始化,这里涉及到了batch_size,这里就是导致后来喂数据的时候,不能改变bathc_size的原因,通过查dynamic_rnn的api说明,它是可以不提供initial_state,让其自行填充为0的,只需要指定dtype即可。

将outputs, final_state = tf.nn.dynamic_rnn(lstm_cell, convnets, initial_state=init_state, time_major=False)替换成下行即可在训练的过程中改变batch_size
outputs, final_state = tf.nn.dynamic_rnn(lstm_cell, convnets, dtype=tf.float32, time_major=False)

其实我改变batch_size的初衷是,我的训练集不可能刚好是batch_size的整数倍,所以最后一个batch的样本不得不放弃,或者采取其它的操作对于如何改变时间步,dynamic_rnn有个参数为sequence_length,用feed_dict给它喂对应batch的序列长度就可以了

 

参考https://www.tensorflowers.cn/t/523#pid2018


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM