Keras model.fit () выдает ошибку о неопределенном параметре `steps_per_epoch` - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь установить модель Keras с набором данных tf.Datase в качестве моего набора данных.Я указываю параметр 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

1 Ответ

0 голосов
/ 20 июня 2019

Ваши train_dataset и validation_dataset являются наборами данных (посмотрите документацию по тензорному потоку для функции from_tensor_slices ): https://www.tensorflow.org/api_docs/python/tf/data/Dataset#from_tensor_slices

Я думаю, что вам нужно использовать данные из набора данных.Например, вы можете сделать это итератором по вашему полному набору данных с помощью следующей функции:

iterator = dataset.make_one_shot_iterator ()

Посмотрите документацию тензорного потока о том, как использовать данные из набора данныхobject: https://www.tensorflow.org/guide/datasets#batching_dataset_elements

Посмотрите также на этот пост под названием Как правильно объединить API набора данных TensorFlow и Keras? : Как правильно объединить API набора данных TensorFlow и Keras?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...