我在Windows 7中使用keras 1.1.1和tensorflow后端 .
我试图在图像下采样器前面添加Resnet50预备模型 . 以下是我的代码 .
from keras.applications.resnet50 import ResNet50
import keras.layers
# this could also be the output a different Keras model or layer
input = keras.layers.Input(shape=(400, 400, 1)) # this assumes K.image_dim_ordering() == 'tf'
x1 = keras.layers.AveragePooling2D(pool_size=(2,2))(input)
x2 = keras.layers.Flatten()(x1)
x3 = keras.layers.RepeatVector(3)(x2)
x4 = keras.layers.Reshape((200, 200, 3))(x3)
x5 = keras.layers.ZeroPadding2D(padding=(12,12))(x4)
m = keras.models.Model(input, x5)
model = ResNet50(input_tensor=m.output, weights='imagenet', include_top=False)
但我得到一个错误,我不确定如何解决 .
builtins.Exception:图表已断开:无法在图层“input_2”获取张量输出(“input_2:0”,shape =(?,400,400,1),dtype = float32)的值 . 访问以下先前的图层时没有问题:[]
1 回答
您可以使用Functional API和Sequential方法来解决此问题 . 请参阅以下两种方法的工作示例:
摘要(替换xnet的resnet):
这两种方法都很好 . 如果你计划冻结预训练模型并让前/后层学习 - 然后微调模型,我发现工作的方法是这样的: