Tensorflow常见错误

本人在2016年7月份刚开始学习神经网络,原来是VS写C++,现在什么都换了,VS换成eclipse,C++换成Python,Windows换成Ubuntu,虽说Python比C++简单,可是对于一个写惯了的人来说,刚开始肯定是Python要难过C++。研一下半年那会刚搞C++,也把C++常见错误给罗列出来,方便日后自己知道错误方向,慢慢写得多了,错误基本上一看就知道是哪里蹦错了,到后期也就没有再继续往下写,不过出现的Bug真的是学习语言的最好老师。现在开始学Python调用tensorflow库进行深度学习,也决定将错误规整一下,而且错误解决的程度比C++难多了,因为现在用tensorflow的人还没有用C++的人那么多,时间那么久远。现在只能靠自己慢慢摸索前进。本博客会不断更新,毕竟我博士期间就打算使用神经网络干活了。现在的实习也是要用到神经网络。

不多说了,说多了都是泪,现在开始解决一个个bug,解决过程中也会不断增加我的成就感,fighting。。。


1、SyntaxError: Non-ASCII character ‘\xe5’ in file



弹出的错误提示:

这里写图片描述

这个错误是初学者常犯的错误,在写代码时一定要注意:

问题原因:

Python默认是以ASCII作为编码方式的,如果在自己的Python源码中(即使是注释部分)包含了中文(或者其他非英语系的语言),此时即使你把自己编写的Python源文件以UTF-8格式保存了,但实际上,这依然是不行的

解决方法:

源代码文件第一行添加:#coding:utf-8,这样就可以避免了,

也可以改为,在第一行增加:#-- coding: UTF-8 --

注:此语句一定要添加在源代码的第一行。

几个概念要先搞清楚:
•默认的python文件是采用ascii编码的,在头部加入# -- coding: utf-8 -- 则指定文件的编码格式是utf-8,那么就是说文件内你可以用中文或其他的文字了。
•cn = u”中文”,这个前缀u代表“中文”是采用unicode编码,也就是cn并不是string而是一个unicode。
•当你用print输出的时候会自动根据本地的语言环境转换成string。


2、IndentationError: expected an indented block


弹出的错误提示:

解决方法:

Python语言是一款对缩进非常敏感的语言,给很多初学者带来了困惑,即便是很有经验的Python程序员,也可能陷入陷阱当中。最常见的情况是tab和空格的混用会导致错误,或者缩进不对,而这是用肉眼无法分别的。
在编译时会出现这样的错IndentationError:expected an indented block说明此处需要缩进,你只要在出现错误的那一行,按空格或Tab(但不能混用)键缩进就行。

往往有的人会疑问:我根本就没缩进怎么还是错,不对,该缩进的地方就要缩进,不缩进反而会出错,,比如:

if xxxxxx:

(空格)xxxxx

或者

def xxxxxx:

(空格)xxxxx

还有

for xxxxxx:

(空格)xxxxx

一句话 有冒号的下一行往往要缩进,该缩进就缩进


3、SyntaxError: ‘return’ outside function


原因:缩进错误

解决方法:语句调整缩进


4、类型错误
TypeError: Input ‘value’ of ‘Assign’ Op has type float64 that does not match type float32 of argument ‘ref’.
*







这是弹出的问题界面,从问题界面中我们可以看到具体出错是在哪一行出错的。如图中绿色框中便是代码出错的语句。根据提示的错误是传入数据的类型不对,通过调整数据类型来解决问题。

这是弹出的问题界面,从问题界面中我们可以看到具体出错是在哪一行出错的。如图中绿色框中便是代码出错的语句。根据提示的错误是传入数据的类型不对,通过调整数据类型来解决问题。



5、

IOError: broken data stream when reading image file

 

今天运行代码时出现一个奇怪的错误,如果不是这个错误,估计以后可能要想半天,因为今天出错误的代码就几行,来来回回也是试了改了好多次才突发奇想想到的问题的关键。

对于这个错误给出的提示我们很容易知道这是在读取图像时出现的错误,但是这个读取图像的程序我刚刚运行过是没有问题的。如下图所示代码运行时是没有任何问题存在的。

<span style="font-size:12px;">#显示图像尺寸与通道

import matplotlib.imageas mpimg

 

#1、读入图像

filename ="MarshOrchid.jpg"

image = mpimg.imread(filename)
</span>

运行这个没有问题,为什么转换到了tensorflow下就出现问题呢,下面是问题代码:

<span style="font-size:12px;">import tensorflowas tf

import matplotlib.imageas mpimg

import matplotlib.pyplotas plt

 

#加载图像

filename ="MarshOrchid.jpg"

image = mpimg.imread(filename)

 

#创建tensorflow变量

x = tf.Variable(image,name='x')

 

model = tf.initialize_all_variables()
</span>

 

来来回回害怕自己拼写错误复制粘贴好几次,字符拼了一遍又一遍,到网上查说是jpg的包未安装,可是这个明显在我这里是不成立的。因为刚刚已经加载成功了。毕竟现在tensorflow的错误解决方案不多,只好自己动手了。找来找去,发现当导入tensorflow库时imread就会出现错误,只要把tensorflow去掉是不会提示有错误的。OK,现在错误定位出来了,是tensorflow的问题。可是我们不能因此把tensorflow给删掉呀,删了不就是本末倒置了嘛,我们现在就想用tensorflow来解决问题的,去掉就啥都没有了。

言归正传,找到是import tensorflow as tf 这句话导致的错误。可又不能去掉,工科生的本能就是——不断的尝试解决方案。所以当时就抱着试试的态度将import tensorflow as tf 的位置由最开始的位置,调到了后面的位置,如下所示:

<span style="font-size:12px;">import matplotlib.imageas mpimg

import matplotlib.pyplotas plt

import tensorflowas tf
</span>

调完之后就不会再报那个错误了。可是这我就好奇了,为了解释我的好奇,我将我的代码全部粘出,有懂的还请指教指教。

<span style="font-size:12px;">import matplotlib.imageas mpimg

import matplotlib.pyplotas plt

import tensorflowas tf

 

#加载图像

filename ="MarshOrchid.jpg"

image = mpimg.imread(filename)

 

#创建tensorflow变量

x = tf.Variable(image,name='x')

 

model = tf.initialize_all_variables()

 

with tf.Session()as session:

    x = tf.transpose(x, perm=[1,0,2])

    session.run(model)

    result = session.run(x)

  

plt.imshow(image)

plt.show()
</span>

按照刚刚那个错误的解决逻辑,是按照运行属性来排列import导入库的,那该程序的运行顺序为:image--->tensorflow---->pyplot库,那我相应的调整其import,将tensorflow放在了pyplot前面,竟然会报错误,放在后面就没有关系了。我现在唯一能让自己想通的就是imagepyplot属于一家,均为matplotlib。此问题待大牛或者我再深入了解之后再做深入回答。

在个人看来,import其实就是相当于C 语言中的头文件,受到C的影响,在写Python时直观的也认为import导入的库是没有先后顺序的。这就是这个问题出现的根本。在Python中,就目前看来,其import导入的库是有先后顺序的。



6、

python报错<type 'exceptions.TypeError'>: 'NoneType' object is not callable


这个错误分为两种情况,一种情况是运行时出现这个错误,另一种情况是运行时不弹出错误,但是在调试代码时出现错误。下面根据两方面来探讨解决方法。


无论是调试还是运行,如果单从错误看来是你使用的对象没有定义,你需要检查程序中函数是否写正确。这一点是必须要做的。


情况1:如果在运行时出现这个错误,这很有可能是你程序中某个单词拼写错误了,有时候函数名错误是不会出现红色错误提示符的。则可根据下方给出的错误提示中的print type(XXX)找到问题所在,因为xxx 就是代表调用出错的对象的名称,就是报错日志所在行的代码被调用的对象的名称。

情况2:在运行时不出现错误,调试时出错误。作为程序猿,少则百行,多则数万行的代码都是要写得,有时为了减少错误,很多人都会选择编写完一个功能函数运行一下或者调试一下来看看整体有无拼写错误。本人就喜欢有这个习惯。今天写完一个函数,点运行时错点了调试,当时感觉反正大家都差不多,调试就调试吧,然而调试时竟然蹦出这个错误,查了半天也不知为什么,因为这个错误蹦出的后半段与情况1蹦出的错误不同,整体错误是:“Exception TypeError: TypeError("'NoneType' object is not callable",) in <function _remove at 0x7f44bbc436e0> ignored”试了半天才知道,原来我现在调试的程序中只有定义好的函数,并没有对函数进行调用,就是因为这个原因导致你在调试时出错误。所以你只要加上调用那部分函数的代码就没有问题了。

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
在安装tensorflow后,如果在导入tensorflow时出现问题,可能是由于以下原因之一: 1. TensorFlow未正确安装:请确保您已按照官方文档的指示正确安装了TensorFlow。您可以尝试重新安装TensorFlow,确保按照正确的步骤进行操作。 2. Python环境问题:TensorFlow可能与您当前的Python环境不兼容。请确保您正在使用与TensorFlow兼容的Python版本,并且您的Python环境已正确配置。 3. 缺少依赖项:TensorFlow可能依赖于其他库或软件包。请确保您已安装了TensorFlow所需的所有依赖项,并且它们的版本与TensorFlow兼容。 4. 系统配置问题:某些系统配置可能会导致TensorFlow无法正常导入。您可以尝试更新操作系统、驱动程序或其他相关软件,以解决可能存在的冲突。 以下是一些解决此问题的常见方法: 1. 检查TensorFlow安装:确保您已正确安装了TensorFlow,并且安装过程中没有出现任何错误。您可以尝试重新安装TensorFlow,确保按照正确的步骤进行操作。 2. 检查Python环境:确保您正在使用与TensorFlow兼容的Python版本,并且您的Python环境已正确配置。您可以尝试在干净的Python环境中安装和导入TensorFlow,以排除任何与其他库或软件包的冲突。 3. 检查依赖项:确保您已安装了TensorFlow所需的所有依赖项,并且它们的版本与TensorFlow兼容。您可以查看TensorFlow官方文档中的依赖项列表,并确保您的系统满足这些要求。 4. 更新系统配置:如果您的系统配置可能导致TensorFlow无法正常导入,请尝试更新操作系统、驱动程序或其他相关软件,以解决可能存在的冲突。 请注意,这只是一些常见的解决方法,具体解决方法可能因个人情况而异。如果问题仍然存在,请提供更多详细信息,以便我们能够更好地帮助您解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值