Tensorflow常见报错

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

弹出的错误提示:
Tensorflow常见报错
这个错误是初学者常犯的错误,在写代码时一定要注意:

问题原因:
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、TypeError: Input ‘value’ of ‘Assign’ Op has type float64 that does not match type float32 of argument ‘ref’.

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

3、IOError: broken data stream when reading image file

· 注意import导入库的先后顺序

例如:

import tensorflow as tf
import matplotlib.image as mpimg
import matplotlib.pyplot as plt
 
#加载图像
filename ="MarshOrchid.jpg"
image = mpimg.imread(filename)
 
#创建tensorflow变量
x = tf.Variable(image,name='x')
model = tf.initialize_all_variables()

# ///////////////// 此时报错IOError: broken data stream when reading image file

更改后

import matplotlib.image as mpimg
import matplotlib.pyplot as plt
import tensorflow as tf
 
#加载图像
filename ="MarshOrchid.jpg"
image = mpimg.imread(filename)
 
#创建tensorflow变量
x = tf.Variable(image,name='x')
model = tf.initialize_all_variables()

# /////////////////////// 不再报错

4、<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”试了半天才知道,原来我现在调试的程序中只有定义好的函数,并没有对函数进行调用,就是因为这个原因导致你在调试时出错误。所以你只要加上调用那部分函数的代码就没有问题了。