Как запустить слой keras (скажем, Conv2DTranpose или любой другой) как один слой, чтобы понять поведение - PullRequest
0 голосов
/ 09 января 2019

Любопытно, я просто хотел понять реализацию слоя Keras. Есть ли какой-нибудь подход, с помощью которого можно запускать керас (любой слой) как самостоятельный слой. (Tensorflow Backend)

Слой: Conv2DTranspose или любой

Ответы [ 3 ]

0 голосов
/ 10 января 2019

Я нашел способ разработать простую однослойную модель. Кстати, спасибо за помощь.

keras_model = Sequential()
keras_model.add(Conv2DTranspose(32, (2, 2), strides=(2, 2), input_shape=(32, 32, 3), name='trans'))
keras_model.compile(loss=keras.losses.categorical_crossentropy, optimizer=keras.optimizers.SGD())
keras_model.summary()
keras_model.save('model.h5')
0 голосов
/ 18 января 2019

Я сделал это так:

image_t = ds.make_one_shot_iterator().get_next() 
inputs = Input(shape=(224, 224, 3))
conv = Conv2D(16, (3, 3), padding='same')(inputs)
m = Model(inputs=inputs, outputs=conv)
m.compile(loss='mse', optimizer='rmsprop')  # loss and optimizer do not matter really
m.summary()

with tf.Session() as sess:                                                                                                                                                                                                                                        
   image = sess.run([image_t])                                                                                                                                                                                                                                         
   out = m.predict(image)[0]  
0 голосов
/ 09 января 2019

Вы можете извлечь веса каждого слоя в керасах и использовать его для инициализации весов нового слоя того же типа. Затем используйте этот новый слой в качестве модели и просто сделайте прогноз. Если слой не первый, вам нужно воссоздать модель со всеми слоями до требуемого слоя, инициализировать их веса с весами из обученной модели, а остальное остается тем же.

...