ValueError: Cannot feed value of shape (9, 240, 320) for Tensor 'x:0', which has shape 的解决办法

本文介绍了一个在使用TensorFlow进行手势识别时遇到的数据维度不匹配问题及解决方案。作者在读取图片并使用预训练的神经网络模型进行预测时,遇到了ValueError异常,原因是输入数据的维度与模型期望的维度不符。通过调整数据的维度,问题得以解决,模型成功预测了手势类别。
部署运行你感兴趣的模型镜像

今天写了如下的代码,用来测试手势识别的神经网络算法准确性:

from skimage import io,transform
import tensorflow as tf
import numpy as np
import os

path =  "./Images/"

dict = {0:'palm',1:'l',2:'fist',3:'fist_move',4:'thumb',5:'index',6:'ok',7:'palm_move',8:'c',9:'down'}

w=240
h=320
c=1

def read_one_image(path):
    img = io.imread(path)
    img = transform.resize(img,(w,h))
    return np.asarray(img)

with tf.Session() as sess:
    data = []

    for images in os.listdir(path):
        #data1 = read_one_image(os.path.join(path,images))
        data1 = read_one_image(path + images)
        data.append(data1)

    #data = np.array(data).reshape(-1,w,h,1)

    saver = tf.train.import_meta_graph('./modelSave/model.ckpt.meta')
    saver.restore(sess,tf.train.latest_checkpoint('./modelSave/'))

    graph = tf.get_default_graph()
    x = graph.get_tensor_by_name("x:0")
    feed_dict = {x:data}

    logits = graph.get_tensor_by_name("logits_eval:0")

    classification_result = sess.run(logits,feed_dict)

    # 打印出预测矩阵
    print(classification_result)
    # 打印出预测矩阵每一行最大值的索引
    print(tf.argmax(classification_result, 1).eval())
    # 根据索引通过字典对应花的分类
    output = []
    output = tf.argmax(classification_result, 1).eval()
    for i in range(len(output)):
        print("第",i+1,"个手势预测:"+dict[output[i]])

可是运行的时候却报错:ValueError: Cannot feed value of shape (9, 240, 320) for Tensor 'x:0', which has shape '(?, 240, 320, 1)'

原来是data的维度和Tensor x不匹配,添加红色部分的那一句data = np.array(data).reshape(-1,w,h,1)  ,

就可以正常运行了,输出的结果如下:

...

[1 4 6 9 0 0 1 2 4]
第 1 个手势预测:l
第 2 个手势预测:thumb
第 3 个手势预测:ok
第 4 个手势预测:down
第 5 个手势预测:palm
第 6 个手势预测:palm
第 7 个手势预测:l
第 8 个手势预测:fist
第 9 个手势预测:thumb

 

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值