【发布时间】:2018-03-08 05:29:50
【问题描述】:
我正在尝试使用预训练的 ResNet50 中的一些层(包含在 keras.applications 中的层)构建一个神经网络 为此,我使用了模型的 get_layer 方法。像这样。
input = Input( (224, 224 , 3) )
resnet = ResNet50(weights='imagenet', pooling=max, include_top = False , input_tensor=input )
firstconv = resnet.get_layer("conv1")
然后我打印出 firstconv 的形状:
print( firstconv.output_shape )
我得到了预期的结果(根据 model.summary() ): (?, 112 , 112 , 64 )
然后在代码中,我在输入张量上调用 firstconv 层:
x = firstconv( inputs )
然后我打印这个 x 的形状,然后我得到 ( ? , 109 , 109 , 64 ) 代码因为形状冲突而中断。
我想知道为什么会这样,我该如何解决。我仍在从 keras 和深度学习中学习,也许我尝试访问 Resnet50 内部层的方式有问题。
提前致谢
我正在使用从 pip 安装的 Ubuntu 14.04、Keras 2.1.4 和 Tensorflow 1.6 作为 keras 的后端。
编辑:
self.input = Input( (224, 224 , 3) )
self.resnet = ResNet50(weights='imagenet', pooling=max, include_top = False , input_tensor=self.input )
for layer in self.resnet.layers:
layer.trainable = False
self.firstconv = self.resnet.get_layer("conv1")
print(" first convt output ")
# this outputs (? , 112 , 112 , 3) , the desired shape
print( self.firstconv.output_shape )
... later on the code
x = self.firstconv( self.input)
print( x.shape )
# this outputs ( ? , 109 , 109 , 64 ), but the expected shape is ( ? , 112 , 112 , 64 )
就是这样。在代码之间,我没有在 self.firstconv 或 input 上做任何事情
【问题讨论】:
标签: python tensorflow keras