由于要处理的层计算图是静态数据结构,可以对其进行访问和检查。而这就是将函数式模型绘制为图像的方式。
这也意味着您可以访问中间层的激活函数(计算图中的“节点”)并在其他地方重用它们,这对于特征提取之类的操作十分有用。
让我们来看一个例子。下面是一个 VGG19 模型,其权重已在 ImageNet 上进行了预训练:
下面的代码就是首先调用VGG19模型,我们需要VGG19中间层提取到的特征,所以我们指定输出为VGG19的输入,然后输出是VGG19中间内部的每个层,这样当我们传入一个图片数据给这个模型时,我们就会获得利用VGG19提取到的特征。
完整代码:
""" * Created with PyCharm * 作者: 阿光 * 日期: 2022/1/2 * 时间: 11:25 * 描述: """ import numpy as np import tensorflow as tf from keras import Model vgg19 = tf.keras.applications.VGG19() features_list = [layer.input for layer in vgg19.layers] feature_extraction_model = Model( inputs=vgg19.input, outputs=features_list ) img = np.random.random((1, 224, 224, 3)).astype('float32') extracted_features = feature_extraction_model(img) print(extracted_features)