【发布时间】:2020-05-14 00:48:28
【问题描述】:
是否可以删除/替换 tf.keras.applications 中预训练的 ResNet50 模型的 BOTTOM 层?
例如,我尝试过这样做:
import tensorflow as tf
pretrained_resnet = tf.keras.applications.ResNet50(include_top=False, weights='imagenet')
inputs = tf.keras.Input(shape=(256,256,1))
x = tf.keras.layers.ZeroPadding2D()(inputs)
x = tf.keras.layers.Conv2D(filters=64,
kernel_size=(7,7),
strides=(2,2),
padding='same')(x)
outputs = pretrained_resnet.layers[3](x)
test = tf.keras.Model(inputs, pretrained_resnet.output)
但它给出了这个错误:ValueError: Graph disconnected: cannot get value for tensor Tensor("input_2:0", .......
我也尝试过使用 tf.keras Sequential API,但这不起作用,因为 ResNet 不是顺序模型。我基本上只是想用一个新的替换 ResNet50 中的第一个 Conv2D 层。这可能吗?还是我必须重写整个 ResNet 模型?
任何建议将不胜感激!
【问题讨论】:
-
ZeroPadding2D和Conv2D (7*7, 64, stride 2)是2nd和3rd层的Resnet50网络。您能否确认一下,您是否只想替换第一层,即输入层?如果是,在答案部分,我已经提供了解决方案。谢谢!
标签: tensorflow keras tensorflow2.0 tf.keras