我想使用 Keras 的预训练 VGG16 模型以及另一个 TensorFlow 模型。我想从 Keras 中的 VGG16 层中获取输出,将其放入 TensorFlow 模型并仅训练后者。如果我为 Keras 使用 TensorFlow 后端,这可能吗?
是否可以集成 Keras 和 TensorFlow 代码?
数据挖掘
喀拉斯
张量流
2021-09-22 03:55:34
2个回答
一种整合 Keras 和 Tensorflow 的简单方法:
input_img = tf.placeholder(tf.float32, (1,200,300,3), name='input_img')
vgg19 = tf.keras.applications.VGG19(weights='imagenet', include_top=False)
output = vgg19(input_img)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
output_val = sess.run(output, {input_img:
np.expand_dims(img,0)})
output_val.shape, output_val.mean()
我相信您必须能够K.function
从 Keras 模型中获取中间张量。像这样的东西:
input_tensor = Input(shape=(224, 224, 3))
base_model = VGG16(input_tensor=input_tensor, weights='imagenet')
for layer in base_model.layers:
layer.trainable = False
model = Model(inputs=base_model.input, outputs=base_model.get_layer('block4_pool').output)
keras_model_output = K.function([model.input, model.output])
然后,在上面构建一个 Tensorflow 模型keras_model_output
并照常训练。