cifar10_input使用时的注意事项
在使用cifar10数据集时,一般会使用cifar10_input.py导入测试图片和标签,但是由于tensorflow版本变化的原因,我们经常会遇到如下两种保存:
AttributeError:‘module’对象没有属性’per_image_whitening’和AttributeError: module ‘tensorflow’ has no attribute ‘image_summary’,这两个报错就是由于版本不兼容问题导致的。解决方案:
用per_image_standardization替换per_image_whitening
用summary.image替换image_summary
改完后就可以使用了,python代码如下:
import tensorflow as tf
import numpy as np
import pylab
import cifar10_input
filename='cifar-10-binary'
batch_size=128
images_test,labels_test=cifar10_input.inputs(eval_data=True,data_dir=filename,batch_size=batch_size)
sess=tf.InteractiveSession()
tf.global_variables_initializer().run()
tf.train.start_queue_runners()
image_batch,label_batch=sess.run([images_test,labels_test])
#print("__\n",image_batch[0])
#print("__\n",label_batch[0])
pylab.imshow(image_batch[0])
pylab.show()
运行结果:
由于cifar10_input.py对图片进行标准化处理,所以显示的图片有点怪异。正常的导入代码如下:
import tensorflow as tf
import numpy as np
import pylab
filename='cifar-10-binary/test_batch.bin'
bytestream=open(filename,'rb')
buf=bytestream.read(10000*(1+32*32*3))
bytestream.close()
data=np.frombuffer(buf,dtype=np.uint8)
data=data.reshape(10000,1+32*32*3)
labels_images=np.hsplit(data,[1])
labels=labels_images[0].reshape(10000)
images=labels_images[1].reshape(10000,32,32,3)
img=np.reshape(images[0],(3,32,32))
img=img.transpose(1,2,0)
print(labels[0])
pylab.imshow(img)
pylab.show()
运行结果:
代码参考《深度学习之TensorFlow入门、原理与进阶实战》