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 изображение?

То, что я предлагаю вам, это сложный сверточный автокодер. Это делает излишние слои и деконволюцию обязательными. Здесь вы можете найти общую идею и код в Theano (на котором построен Keras):

https://swarbrickjones.wordpress.com/2015/04/29/convolutional-autoencoders-in-pythontheanolasagne/

Пример определения необходимых слоев можно найти здесь:

https://github.com/fchollet/keras/issues/378