如何将keras层(例如Conv2DTranpose或任何一个层)作为单个层运行以了解行为

时间:2019-01-09 11:37:44

标签: tensorflow keras keras-layer

奇怪的是,我只是想了解Keras层的实现。有没有一种方法可以将keras(任何层)作为独立层运行。 (Tensorflow后端)

图层:Conv2DTranspose或任何

3 个答案:

答案 0 :(得分:0)

您可以提取keras中每一层的权重,并使用它来初始化相同类型的新层的权重。然后将此新层用作模型并进行预测。如果不是第一层,则必须重新创建所有层的模型,直到需要的层为止,然后使用经过训练的模型中的权重来初始化它们的权重,其余部分都相同。

答案 1 :(得分:0)

我找到了一种开发简单单层模型的方法。顺便说一句,谢谢您的帮助。

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')

答案 2 :(得分:0)

我是这样做的:

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]