首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Model.predict() ValueError:形状为(?,300,300,3)张量的Cananot进给值(300,300,3)

Model.predict() ValueError:形状为(?,300,300,3)张量的Cananot进给值(300,300,3)
EN

Stack Overflow用户
提问于 2019-01-08 20:54:38
回答 1查看 110关注 0票数 0

我已经训练了我的分类器,它工作得很好。但我在这里遇到了一个关于形状的值错误。我甚至调整了测试图像的形状(300,300,3)。请帮帮忙。

我正在尝试从我构建的训练分类器中预测图像。但每次我尝试这样做的时候,它都会给我这个值错误。我也研究了很多地方,但直到现在还没有发现任何东西。

我的代码如下。

代码语言:javascript
复制
X_train = np.load('D:/ThesisWork/Training_data.npy')#training_images
y_train = np.load('D:/ThesisWork/Training_labels.npy')#training_labels
X_test = np.load('D:/ThesisWork/Testing_data.npy')#testing_images
y_test = np.load('D:/ThesisWork/Testing_labels.npy')#testing_labels


with tf.device('/gpu:0'):
  tf.reset_default_graph()
  convnet = input_data(shape=(None,IMG_SIZE,IMG_SIZE,3),name='input')
  #shape=[None, IMG_SIZE, IMG_SIZE, 1],
  convnet = conv_2d(convnet, 32, 5, activation='relu')
  convnet = max_pool_2d(convnet, 5)
  convnet = conv_2d(convnet, 64, 5, activation='relu')
  convnet = max_pool_2d(convnet, 5)
  convnet = conv_2d(convnet, 128, 5, activation='relu')
  convnet = max_pool_2d(convnet, 5)
  convnet = conv_2d(convnet, 64, 5, activation='relu')
  convnet = max_pool_2d(convnet, 5)
  convnet = conv_2d(convnet, 32, 5, activation='relu')
  convnet = max_pool_2d(convnet, 5)
  convnet = fully_connected(convnet, 1024, activation='relu')
  convnet = dropout(convnet, 0.8)
  convnet = fully_connected(convnet, 163, activation='softmax')
  convnet = regression(convnet, optimizer='adam', loss='categorical_crossentropy', name='targets')
  model = tflearn.DNN(convnet, tensorboard_dir='log', tensorboard_verbose=0)
  model.fit({'input': X_train}, {'targets': y_train}, n_epoch=40,
            validation_set=({'input': X_test}, {'targets': y_test}),
            snapshot_step=500, show_metric=True, run_id=MODEL_NAME)

# =========================
# For Saving The Model
# =========================
model.save('my_trained_model.tflearn')
# np.save('training_finalized_data.npy', model)
# =========================
# For Prediction
# =========================
model_out = model.predict(X_test[0])
print(model_out)
plt.imshow(model_out)
plt.show()
model_out1 = model.predict_label(X_test[0])

print("Model_OUT LABEL", model_out1)

我面临的错误如下所示。

代码语言:javascript
复制
Traceback (most recent call last):
  File "d:/DeepLearningThesis/Deep-learning-methods-for-Vehicle-Classification/Classifier_with_one_hot_labels.py", line 202, in <module>
    model_out = model.predict(X_test[0])
  File "C:\Users\zeele\Miniconda3\lib\site-packages\tflearn\models\dnn.py", line 257, in predict
    return self.predictor.predict(feed_dict)
  File "C:\Users\zeele\Miniconda3\lib\site-packages\tflearn\helpers\evaluator.py", line 69, in predict
    return self.session.run(self.tensors[0], feed_dict=feed_dict)
  File "C:\Users\zeele\Miniconda3\lib\site-packages\tensorflow\python\client\session.py", line 929, in run
    run_metadata_ptr)
  File "C:\Users\zeele\Miniconda3\lib\site-packages\tensorflow\python\client\session.py", line 1128, in _run
    str(subfeed_t.get_shape())))
ValueError: Cannot feed value of shape (300, 300, 3) for Tensor 'input/X:0', which has shape '(?, 300, 300, 3)'
EN

回答 1

Stack Overflow用户

发布于 2019-01-09 00:44:36

所以,我尝试了@flica205提到的链接,它确实起作用了。但对于可能的最佳答案,您应该使用np.expand_dims(img,axis = 0)。

我的代码如下

代码语言:javascript
复制
predictingimage = "D:/compCarsThesisData/data/image/78/12/2012/722894351630dc.jpg" #67/1698/2010/6805eb92ac6c70.jpg"
predictImageRead = mpg.imread(predictingimage)
resizingImage = cv2.cv2.resize(predictImageRead,(IMG_SIZE,IMG_SIZE))
reshapedFinalImage = np.expand_dims(resizingImage, axis=0)
# imagetoarray = np.array(resizingImage)
# reshapedFinalImage = imagetoarray.reshape(1,IMG_SIZE,IMG_SIZE,3)

# =========================
# For Prediction
# =========================
model_out = model.predict(reshapedFinalImage)
print(model_out)
plt.imshow(model_out)
plt.show()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54092258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档