2

我在 Python 3.6 版上使用 Keras 2.0.5 版和 theano 作为后端。
我正在尝试通过使用ResNet50模型来实现迁移学习,并使用了以下示例中给出的代码:https://keras.io/applications/将以 下行添加到代码中使 python 停止工作:

model = ResNet50(weights='imagenet')

我已尝试按照其他链接中的建议更改模型定义:

model = ResNet50(include_top=False, weights='imagenet',input_shape=(3,224,224))

但这给了我另一个错误:

ValueError:输入必须有3个通道;得到 `input_shape=(3, 224, 224)

代码如下:

from keras.applications.resnet50 import ResNet50
from keras.preprocessing import image
from keras.applications.resnet50 import preprocess_input, decode_predictions
import numpy as np

model = ResNet50(include_top=False, weights='imagenet',input_shape=(3,224,224))

我的 theano 配置文件:(theanorc)

[global]
floatX = float32
device = cpu

[nvcc]
compiler_bindir=C:\Program Files (x86)\Microsoft Visual 
Studio\Shared\14.0\VC\bin

我的 keras 配置文件:(keras.json):

{
"epsilon": 1e-07,
"image_data_format": "channels_first",
"image_dim_ordering": "th",
"backend": "theano",
"floatx": "float32"
}
4

2 回答 2

0

我能够通过为 python 3.5 安装 anaconda 来实现迁移学习,使用带有 theano 后端的 keras 并且它可以工作。不知何故,没有 anaconda 的 Python 3.6 安装不起作用。

于 2017-07-24T09:10:13.967 回答
0

这是因为网络认为您正在使用 tensorflow data_format。在 tensorflow 中,图像的通道排在最后(im_rows, im_cols, 3),而在 Theano 中,通道排在第一位(3, im_rows, im_cols)

从应用程序文档(您提供的链接):

所有这些架构(Xception 除外)都与 TensorFlow 和 Theano 兼容,并且在实例化时,模型将根据您在 ~/.keras/keras.json 中的 Keras 配置文件中设置的图像数据格式构建。例如,如果您设置了 image_data_format=channels_last,那么从此存储库加载的任何模型都将根据 TensorFlow 数据格式约定“宽度-高度-深度”构建。

我会建议你试试这个,将 image_data_format 更改为 channels_first。

我希望这有帮助 :)

于 2017-07-17T04:59:32.597 回答