Я использую модель классификации изображений. Вот где я застрял. Пытался понизить версию keras до 1.0.2, и снова запустить скрипт не удалось.

Ноутбук Jupyter просто продолжает обработку и ничего не запускает после первой эпохи, выполняя код на keras 1.2 с python 3.5

ВЫХОД:

/anaconda/envs/py35/lib/python3.5/site-packages/ipykernel/__main__.py:19: UserWarning: Update your `Dense` call to the Keras 2 API: `Dense(101, activation="softmax", kernel_initializer="glorot_uniform", kernel_regularizer=<keras.reg...)`
/anaconda/envs/py35/lib/python3.5/site-packages/ipykernel/__main__.py:21: UserWarning: Update your `Model` call to the Keras 2 API: `Model(outputs=Tensor("de..., inputs=Tensor("in...)`
/anaconda/envs/py35/lib/python3.5/site-packages/ipykernel/__main__.py:44: UserWarning: The semantics of the Keras 2 argument `steps_per_epoch` is not the same as the Keras 1 argument `samples_per_epoch`. `steps_per_epoch` is the number of batches to draw from the generator at each epoch. Basically steps_per_epoch = samples_per_epoch/batch_size. Similarly `nb_val_samples`->`validation_steps` and `val_samples`->`steps` arguments have changed. Update your method calls accordingly.
/anaconda/envs/py35/lib/python3.5/site-packages/ipykernel/__main__.py:44: UserWarning: Update your `fit_generator` call to the Keras 2 API: `fit_generator(<image_gen..., verbose=2, epochs=32, validation_steps=25250, validation_data=<image_gen..., steps_per_epoch=1183, callbacks=[<keras.ca...)`
Epoch 1/32

ВХОД:

%%time
from keras.models import Sequential, Model
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Convolution2D, MaxPooling2D, ZeroPadding2D, GlobalAveragePooling2D, AveragePooling2D
from keras.layers.normalization import BatchNormalization
from keras.preprocessing.image import ImageDataGenerator
from keras.callbacks import ModelCheckpoint, CSVLogger, LearningRateScheduler, ReduceLROnPlateau
from keras.optimizers import SGD
from keras.regularizers import l2
import keras.backend as K
import math

K.clear_session()

base_model = InceptionV3(weights='imagenet', include_top=False, input_tensor=Input(shape=(299, 299, 3)))
x = base_model.output
x = AveragePooling2D(pool_size=(8, 8))(x)
x = Dropout(.4)(x)
x = Flatten()(x)
predictions = Dense(n_classes, kernel_initializer='glorot_uniform', W_regularizer=l2(.0005), activation='softmax')(x)





model = Model(input=base_model.input, output=predictions)

opt = SGD(lr=.01, momentum=.9)
model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy'])

checkpointer = ModelCheckpoint(filepath='model4.{epoch:02d}-{val_loss:.2f}.hdf5', verbose=1, save_best_only=True)
csv_logger = CSVLogger('model4.log')

def schedule(epoch):
    if epoch < 15:
        return .01
    elif epoch < 28:
        return .002
    else:
        return .0004
lr_scheduler = LearningRateScheduler(schedule)

model.fit_generator(train_generator,
                    validation_data=test_generator,
                    nb_val_samples=X_test.shape[0],
                    samples_per_epoch=X_train.shape[0],
                    nb_epoch=32,
                    verbose=2,
                    callbacks=[lr_scheduler, csv_logger, checkpointer])
1
smk 31 Дек 2017 в 01:28

2 ответа

Лучший ответ

Попробуйте использовать verbose = 1 в вызове model.fit, он напечатает индикатор выполнения. Вероятно, он работает, но из-за значения 2, заданного параметру verbose, он будет печатать только одну строку вывода ПОСЛЕ окончания эпохи, что может занять некоторое время в зависимости от вашего процессора / графического процессора и количества данных.

3
Dr. Snoopy 30 Дек 2017 в 23:24

Co-Lab предоставляет ограниченный объем памяти до (12 ГБ) в облаке, что создает множество проблем при решении проблемы. Вот почему для обучения и тестирования используются только 300 изображений. Когда изображения были предварительно обработаны с размером 600x600 и размер пакета был установлен на 128, модель Кераса зависла во время эпохи 1. Компилятор не отображал эту ошибку. Фактически ошибка была связана с ограничением памяти во время выполнения, которая была не может обрабатываться CoLab, потому что он дает только 12 ГБ ограниченной памяти для использования. Решение вышеупомянутой проблемы было решено путем изменения размера пакета до 4 и уменьшения размера изображения до 300x300, потому что с 600x600 это все еще не работает. Наконец, рекомендуемое решение - сделать размер изображений и размер Batch_size маленькими, пока вы не получите ошибку. Запускать снова и снова, изменяя размер пакета и размер изображения на маленький, пока не исчезнут ошибки времени выполнения.

0
hafiz ahmad hassan 5 Сен 2018 в 19:11