[英]Difference between Keras model.fit using only batch_size and using only steps_per_epoch
[英]Keras model.fit() Raises Error About Unspecified Parameter `steps_per_epoch`
我試圖使用tf.Dataset作為我的數據集來擬合Keras模型。 我指定參數steps_per_epoch
。 但是,會引發此錯誤: ValueError: When using iterators as input to a model, you should specify the 'steps_per_epoch' argument.
這個錯誤讓我困惑,因為我指定了數據集長度的steps_per_epoch
參數。 我已經嘗試過None
以及小於我的數據集長度的整數無濟於事。
這是我的代碼:
def build_model():
'''
Function to build a LSTM RNN model that takes in quantitiy, converted week; outputs predicted price
'''
# define model
model = tf.keras.Sequential()
model.add(tf.keras.layers.LSTM(128, activation='relu', input_shape=(num_steps,num_features*input_size)))
model.add(tf.keras.layers.Dense(128*input_size, input_shape=(num_steps,num_features*input_size)))
model.add(tf.keras.layers.Dense(input_size))
model.compile(optimizer='adam', loss='mse')
print(train_data[0].shape, train_data[1].shape)
#cast data
features_type = tf.float32
target_type = tf.float32
train_dataset = tf.data.Dataset.from_tensor_slices((
tf.cast(train_data[0], features_type),
tf.cast(train_data[1], target_type))
)
validation_dataset = tf.data.Dataset.from_tensor_slices((
tf.cast(val_data[0], features_type),
tf.cast(val_data[1], target_type))
)
# fit model
es = tf.keras.callbacks.EarlyStopping(monitor='val_loss', min_delta=1)
model.fit(train_dataset, epochs=500,steps_per_epoch = 134,verbose=1, validation_data = validation_dataset)
# validation_data = (val_data[0], val_data[1])
print(model.summary())
return model
您的train_dataset和validation_dataset是數據集(請查看函數from_tensor_slices的tensorflow文檔 ): https : //www.tensorflow.org/api_docs/python/tf/data/Dataset#from_tensor_slices
我認為您需要使用數據集中的數據。 例如,您可以使用以下函數對整個數據集執行迭代器:
iterator = dataset.make_one_shot_iterator()
查看tensorflow關於如何使用數據集對象數據的文檔: https ://www.tensorflow.org/guide/datasets#batching_dataset_elements
另請參閱這篇題為“ 如何正確組合TensorFlow的數據集API和Keras”的帖子? : 如何正確組合TensorFlow的數據集API和Keras?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.