为什么我的初始-v3(在Keras中)预测都错了?

时间:2017-07-09 11:47:42

标签: machine-learning keras conv-neural-network imagenet

我是ML初学者,只需使用ImageNet权重实现inception-v3。这是我第一次参加比赛。我的实施是在Keras。我的预测都是错的,我需要一点点,看看问题是什么。使用Keras在线查找从上到下使用的inception-v3的示例是非常困难的。大多数是转学习的教程。这是我的代码。

import keras as k
from keras.applications.inception_v3 import InceptionV3
from keras.applications.imagenet_utils import preprocess_input, decode_predictions
from keras.preprocessing import image
import cv2
import numpy as np

model = k.applications.inception_v3.InceptionV3(include_top=True, weights='imagenet', input_tensor=None, input_shape=None)

im = 'images/cat.jpg'
cv2.imread(im).shape

(168,299,3)

im = cv2.resize(cv2.imread(im), (299, 299)).astype(np.float32)
im = np.expand_dims(im, axis=0)
im.shape

(1,299,299,3)

preds = model.predict(im)
print('Predicted:', decode_predictions(preds

预测:[[('n03047690','clog',1.0),('n01924916','flatworm',7.0789714e-11),('n03950228','pitcher',2.1705252e-11),( 'n02841315','双筒望远镜',4.1622389e-13),('n06359193','web_site',3.8697981e-16)]]

有人会建议这个最基本的实现是如何错误的。也许我的输入形状不正确?

1 个答案:

答案 0 :(得分:0)

inception-v3模型要求您在预测之前通过preprocess_input()运行图像。

添加:

im=preprocess_input(im)

另外,您应该从preprocess_input导入keras.applications.inception_v3而不是from keras.applications.imagenet_utils