keras: ошибка генерирования model.fit_generator - PullRequest
0 голосов
/ 21 апреля 2020

Генератор

def generator(n_epochs):
    train_dataset_generator = tf.data.Dataset.from_generator(train_generator, (tf.float32, tf.float32))    
    train_dataset_generator = train_dataset_generator.repeat(n_epochs)                  
    train_iterator = train_dataset_generator.make_one_shot_iterator()

    while True:        
        train_images, train_label = train_iterator.get_next()        
        yield train_images, train_label

Модель

model = tf.keras.Sequential([tf.keras.layers.Conv2D(kernel_size=(3, 3), filters=64, dtype='float32', input_shape=(120, 120, 3)),
    tf.keras.layers.Activation('relu'),
    tf.keras.layers.Conv2D(kernel_size=(3, 3), filters=64, use_bias=True, kernel_regularizer=l2(0.01), bias_regularizer=l2(0.05)),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Activation('relu'),
    tf.keras.layers.MaxPooling2D(pool_size=2),

    tf.keras.layers.Conv2D(kernel_size=(3, 3), filters=32, use_bias=True, kernel_regularizer=l2(0.01), bias_regularizer=l2(0.05)),
    #tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Activation('relu'),
    tf.keras.layers.MaxPooling2D(pool_size=2),

    tf.keras.layers.Conv2D(kernel_size=(3, 3), filters=32, use_bias=True, kernel_regularizer=l2(0.01), bias_regularizer=l2(0.05)),
    #tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Activation('relu'),
    tf.keras.layers.MaxPooling2D(pool_size=2),

    tf.keras.layers.Conv2D(kernel_size=(3, 3), filters=16, use_bias=True, kernel_regularizer=l2(0.01), bias_regularizer=l2(0.05)),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Activation('relu'),
    tf.keras.layers.MaxPooling2D(pool_size=2),


    tf.keras.layers.Conv2D(kernel_size=(3, 3), filters=8, use_bias=True, kernel_regularizer=l2(0.01), bias_regularizer=l2(0.05)),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Activation('relu'),
    tf.keras.layers.MaxPooling2D(pool_size=2),        
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(64, use_bias = True, kernel_regularizer=l2(0.01), bias_regularizer=l2(0.05)),
    tf.keras.layers.Activation('relu'),

    #tf.keras.layers.GlobalAveragePooling2D(),
    tf.keras.layers.Dense(12, activation='linear', name='fc')
])

model.compile(optimizer=tf.train.AdamOptimizer(1e-4), loss='mse', metrics=['mae', 'mse'])  # mean absolute error        
model.summary()

Обучение

batch_size = 32
n_epochs = 10
#num_batches = int(total_items/batch_size)
num_batches = 2000
train_generator_example = generator(n_epochs)
#train_data_generator = my_input_fn(total_items, epochs)
model.fit_generator(train_generator_example, steps_per_epoch=num_batches, epochs=n_epochs, verbose=1)

всякий раз, когда я пытаюсь использовать mode.fit_generator (.... Я всегда получаю сообщение об ошибке: RuntimeError: Вы должны скомпилировать свою модель перед ее использованием. Если я использую model.fit (.....), все работает нормально. Я не понимаю, с какой проблемой я здесь сталкиваюсь.

...