是否可以集成 Keras 和 TensorFlow 代码?

数据挖掘 喀拉斯 张量流
2021-09-22 03:55:34

我想使用 Keras 的预训练 VGG16 模型以及另一个 TensorFlow 模型。我想从 Keras 中的 VGG16 层中获取输出,将其放入 TensorFlow 模型并仅训练后者。如果我为 Keras 使用 TensorFlow 后端,这可能吗?

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并照常训练。