1 问题分析

在这里插入图片描述

通过报错信息,我们可以分析出feed_dict的值与定义的输入数据张量格式不匹配,feed_dict的维度比如是3维的,那么shape是(32,32,3),而如果输入的数据维度是4维的,shape是(None,32,32,3)。所以,导致出现了维度不匹配的问题。
在我的程序中,本应输入一个7维的数据,但是看了下输入的数据只有6维,通过修改数据的格式解决了此问题。
note: 出现这种错误是唯独不匹配导致的错误,这个错误的根源要知道。

2 解决方法

2.1 通过修改输入的数据使数据的维度保持一致。

2.2 修改程序使其匹配

因为我的程序运行过程中出的错不需要改程序,所以这里借鉴一下别人出现的错误,方便大家理解。主要原因是维度不匹配的问题。

image = tf.reshape(image_data, [1, 32, 32, 3])
#输出要经过np.sum函数,才能得到类别编号
#file_label = np.sum(file_label)

另一位出现错误的解决方法

image形状为(64,64,3)。

您的输入占位符_x的形状为(?,64,64,3).

问题是您正在为占位符提供不同形状的值。

您必须为它提供(1,64,64,3)= 一批 1 张图像的值。

只需将您的价值重塑image为大小为 1 的批次。

image = array(img).reshape(1,64,64,3)

3 其他报错

除此之外,在跑程序的过程中,出现了其他的错误,都对应找到了解决方法,先走都放下面供大家参考。

3.1 报错:Ignore above cudart dlerror if you do not have a GPU set up on your machine

解决方法:去pycharm–>setting中下载TensorFlow不同的版本,因为TensorFlow分为不同的版本,有CPU版本的还有GPU版本的,看自己需要下载相应的版本。
在这里插入图片描述
其他解决办法1:
如果电脑没有GPU则忽略此错误提示并退回到CPU版本,重新安装TensorFlow的CPU版本

其他解决办法2:
针对tensorflow-gpu版本使用时报错,各种dll文件找不到的问题进行了总结。
其他解决方法3:
其他提到的是,Keras和TensorFlow-CPU或者TensorFlow-GPU的版本要一致,因为我下载的版本是一致的,都是2.8.0,所以不知道有没有可能是这个原因,可以试一下。
在这里插入图片描述

3.2 报错:AttributeError: module ‘tensorflow’ has no attribute ‘reset_default_graph’

在memory.py文件里面修改内容:
tf.reset_default_graph()改为:

tf.compat.v1.reset_default_graph()

如图所示:
在这里插入图片描述
其他解决方法1

 import tensorflow as tf
tf.compat.v1.reset_default_graph()

这个解决方法是在运行的程序中加入import的方法,解决此问题,我是在memory文件里面修改的文件。

3.3 报错:AttributeError: module ‘tensorflow’ has no attribute ‘placeholder’

在源代码中,placeholder前面是没有.compat.v1的,当我把所有memory文件中的无法识别的前面都加上.compat.v1便解决了。
在这里插入图片描述
其他解决方法1:

将语句 X=tf.placeholder(“float”) Y=tf.placeholder(“float”)
改为:X=tf.compat.v1.placeholder(“float”)
Y=tf.compat.v1.placeholder(“float”)
编译通过

作品将相应的语法改成加上了.compat.v1的方法,举一反三,我也是按照相同的思路改的。

3.4 报错:ValueError: Cannot feed value of shape (1, 6) for Tensor h:0, which has shape (None, 7)

这个问题就是刚开始提到的问题,此问题是数据和TensorFlow模型的维度不一样导致的。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐