- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 Keras 及其预构建的 ImageNet CNN 架构来解决一个简单的二元分类问题。
对于 VGG16,我采用了以下方法,
vgg16_model = keras.application.vgg16.VGG16()
'''Rebuild the vgg16 using an empty sequential model'''
model = Sequential()
for layer in vgg16_model.layers:
model.add(layer)
'''Since the problem is binary, I got rid of the output layer and added a more appropriate output layer.'''
model.pop()
'''Freeze other pre-trained weights'''
for layer in model.layers:
layer.trainable = False
'''Add the modified final layer'''
model.add(Dense(2, activation = 'softmax'))
与我定制的 CNN 相比,它的准确性更高。但是训练需要一段时间,我想使用 Xception 和 InceptionV3 采取类似的方法,因为它们是更轻的模型,具有更高的准确性。
xception_model = keras.applicaitons.xception.Xception()
model = Sequential()
for layer in xception_model.layers:
model_xception.add(layer)
当我运行上面的代码时,出现以下错误:
ValueError: Input 0 is incompatible with layer conv2d_193: expected axis -1 of input shape to have value 64 but got shape (None, None, None, 128)
基本上,我想做与 VGG16 模型相同的事情;保持其他预训练权重不变,并简单地将输出层修改为二元分类输出,而不是具有 1000 个结果的输出层。我可以看到,与具有相对简单的卷积层结构的 VGG16 不同,Xception 和 InceptionV3 有一些我不是 100% 熟悉的时髦节点,我假设这些节点导致了问题。
最佳答案
您的代码失败是因为 InceptionV3
和 Xception
不是 Sequential
模型(即,它们包含“分支”)。因此,您不能只将图层添加到 Sequential
容器中。
现在因为 InceptionV3
和 Xception
的顶层都包含一个 GlobalAveragePooling2D
层和最后的 Dense(1000)
层,
if include_top:
x = GlobalAveragePooling2D(name='avg_pool')(x)
x = Dense(classes, activation='softmax', name='predictions')(x)
如果你想移除最后的密集层,你可以在创建这些模型时设置include_top=False
加上pooling='avg'
。
base_model = InceptionV3(include_top=False, pooling='avg')
for layer in base_model.layers:
layer.trainable = False
output = Dense(2, activation='softmax')(base_model.output)
model = Model(base_model.input, output)
关于python - 预训练 Keras Xception 和 InceptionV3 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48890758/
我正在使用 Google 的 inceptionv-3 模型和 TensorFlow 通过迁移学习(教程的 here's the link)进行性别识别,数据集有 135 张女性面部图像和 335 张
我是一名优秀的程序员,十分优秀!