這是最開始模型的定義,由於這里對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
