首页 > 解决方案 > 替换 tf keras 中现有模型的一层

问题描述

我加载了一个预训练模型。但是,我想在这个模型中添加光谱归一化。

如果模型是完全顺序的,我可以这样做:

import tensorflow as tf

base_model = tf.keras.applications.VGG16(input_shape=(720, 1280, 3), weights=None, include_top=False)

# Add spectral normalization
base_model_new = tf.keras.models.Sequential()
for layer in base_model.layers:
    if isinstance(layer, tf.keras.layers.Conv2D):
        spec_norm_layer = SpectralNormalization(layer)
        base_model_new.add(spec_norm_layer)
    else:
        base_model_new.add(layer)

input = tf.keras.Input(shape=(720, 1280, 3), name='image')
x = base_model_new(input)

model = tf.keras.models.Model(inputs=[input], outputs=x, name='test')

但是,当使用 ResNet 时,此方法不起作用,其中存在需要输入列表的 Add 或 Concatenate 层。如何为 ResNets 解决这个问题?

标签: pythontensorflowkerastf.keras

解决方案


推荐阅读