环境:
win7+Anaconda1.6.3+Spyder3.2.1+tensorflow1.1.0
问题描述:
执行下述代码,读取之前保存的tfrecord文件,发生错误。
import tensorflow as tf
files = tf.train.match_filenames_once("./output/training-images/*.tfrecords")
#虽然没有variable,但也必须init,并且global和local都要有,不然会报错,不信你试试。
init = [tf.global_variables_initializer(), tf.local_variables_initializer()]
with tf.Session() as sess:
sess.run(init)
print (sess.run(files))
错误提示为:UnicodeEncodeError: 'utf-8' codec can't encode character '\udcd5' in position 2255: surrogates not allowed。
解决:
问题发生在tf.train.match_filenames_once这句话。网上提问这个错误的很多,但没有好的解决办法。也浪费了我大半天的时间,如程序所示,我的路径不含中文啊。想到可能是路径问题,我便把项目的整个文件夹拷贝到桌面上,没出现错误!返回到我E盘的项目中,我看到E盘根目录下经过几级目录后,才到项目的路径,即:E:\★11-python\tensorflow\例程\StanfordDog_test\output\training-images,把这里的中文也改成英文E:\★11-python\tensorflow\example\StanfordDog_test\output\training-images,成功了!
总结:
出现上述错误时,要把从硬盘开始一直到文件最后的目录都改成英文,而不是只改子目录。如果还有问题,请检查并确保计算机名称中也不含中文字符。
然而!
我重启电脑,把之前改成英文的路径再改回E:\★11-python\tensorflow\例程\StanfordDog_test\output\training-images,程序执行成功了,没报错!!!!这个真不懂咋回事了。o(╥﹏╥)o