Keras – сеть для сверления поездов, получить выход с автоматическим кодировщиком
Что я хочу сделать: я хочу обучить сверточную нейронную сеть на наборе данных cifar10 только на двух классах. Затем, как только я получу свою модель, я хочу взять все слои и воспроизвести входное изображение. Поэтому я хочу вернуть изображение из сети вместо классификации.
Что я сделал до сих пор:
def copy_freeze_model(model, nlayers = 1): new_model = Sequential() for l in model.layers[:nlayers]: l.trainable = False new_model.add(l) return new_model numClasses = 2 (X_train, Y_train, X_test, Y_test) = load_data(numClasses) #Part 1 rms = RMSprop() model = Sequential() #input shape: channels, rows, columns model.add(Convolution2D(32, 3, 3, border_mode='same', input_shape=(3, 32, 32))) model.add(Activation("relu")) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.5)) model.add(Flatten()) model.add(Dense(512)) model.add(Activation("relu")) model.add(Dropout(0.5)) #output layer model.add(Dense(numClasses)) model.add(Activation('softmax')) model.compile(loss='categorical_crossentropy', optimizer=rms,metrics=["accuracy"]) model.fit(X_train,Y_train, batch_size=32, nb_epoch=25, verbose=1, validation_split=0.2, callbacks=[EarlyStopping(monitor='val_loss', patience=2)]) print('Classifcation rate %02.3f' % model.evaluate(X_test, Y_test)[1]) ##pull the layers and try to get an output from the network that is image. newModel = copy_freeze_model(model, nlayers = 8) newModel.add(Dense(1024)) newModel.compile(loss='mean_squared_error', optimizer=rms,metrics=["accuracy"]) newModel.fit(X_train,X_train, batch_size=32, nb_epoch=25, verbose=1, validation_split=0.2, callbacks=[EarlyStopping(monitor='val_loss', patience=2)]) preds = newModel.predict(X_test)
Также, когда я это делаю:
input_shape=(3, 32, 32)
Означает ли это 3-х канальное (RGB) 32 x 32 изображение?
- Как работать с несколькими входами для LSTM в Keras?
- Запуск тензорного потока в ноутбуке Jupyter
- Правильный способ инициализации последовательной нейронной сети Keras?
- Не удается установить Keras
- ValueError с конкатенатным слоем (функциональный API Keras)
То, что я предлагаю вам, это сложный сверточный автокодер. Это делает излишние слои и деконволюцию обязательными. Здесь вы можете найти общую идею и код в Theano (на котором построен Keras):
https://swarbrickjones.wordpress.com/2015/04/29/convolutional-autoencoders-in-pythontheanolasagne/
Пример определения необходимых слоев можно найти здесь:
- AWS Lambda python Сброс сброшенного соединения
- Обнаружить белый фон на изображениях с помощью python
- Keras, как я могу предсказать, когда я обучил модель?
- Запустить модель в обратном направлении в Keras
- Оптимизация CNN с GridsearchCV, что вызывает ошибку?
- Используйте скрытые состояния вместо выходов в LSTM keras
- Как выполнить среднее вычитание, нормализацию и PCA и отбеливание с помощью KERAS в наборе данных CIFAR10
- Могу ли я отправлять обратные вызовы в KerasClassifier?
- Нейронная сеть (без скрытых слоев) против логистической регрессии?
- Ошибка использования Tensorboard (гистограмма) в модели Hyperas
- Как обрабатывать переменный размер ввода в CNN с помощью Keras?