这是最开始模型的定义,由于这里对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