数据集文件提取

tf.gfile.FastGFile(‘path’, ‘rb’).read()
读取结果是最原始的图像,没有经过解码。如果要显示读入的图像,则需要解码,tf.image.decode_jepg和tf.image.decode_png分别用于解码jpg格式和png格式的图像,得到图像的像素值,这个像素值可以用于显示图像。

image_value = tf.read_file('data/train/cat.11.jpg')
img = tf.image.decode_jpeg(image_value, channels=3)
with tf.Session() as sess:
  print(type(image_value)) # bytes
  print(type(img)) # Tensor
  print(type(img.eval())) # numpy.ndarray !!!
  print(img.eval().shape)#(410,431,3)
  print(img.eval().dtype)#unit8
  plt.figure(1)
  plt.imshow(img.eval())
  plt.show()

decode输出是Tensor,eval后是ndarray
读取文件名字然后获取图像信息
将图像文件名及标签放入队列中
input_queue=tf.train.slice_input_producer([image,label]) label = input_queue[1]
读取图片的全部信息
image_contents = tf.read_file(input_queue[0])
把图片解码,channels =3 为彩色图片, r,g ,b 黑白图片为 1 ,也可以理解为图片的厚度

image=tf.image.decode_jpeg(image_contents,channels =3)

#Tensor形式
#将图片以图片中心进行裁剪或者扩充为指定的尺寸image_W,image_H
image=tf.image.resize_image_with_crop_or_pad(image, image_W, image_H)
#对数据进行标准化,标准化,就是减去它的均值除以方差
image = tf.image.per_image_standardization(image)
生成批次 num_threads 有多少个线程根据电脑配置设置 capacity 队列中最多容纳图片的个数

tf.train.shuffle_batch 打乱顺序,
image_batch, label_batch = tf.train.batch([image, label],batch_size = batch_size, num_threads = 64, capacity = capacity)

重新定义下 label_batch 的形状

label_batch = tf.reshape(label_batch , [batch_size])

转化图片

image_batch = tf.cast(image_batch,tf.float32)

你可能感兴趣的:(tensorfow实验)