浅谈tensorflow中Dataset图片的批量读取及维度的操作详解

 更新时间:2020年01月20日 15:52:00   作者:醉小义  
今天小编就为大家分享一篇浅谈tensorflow中Dataset图片的批量读取及维度的操作详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

三维的读取图片(w, h, c):

import tensorflow as tf
 
import glob
import os
 
 
def _parse_function(filename):
  # print(filename)
  image_string = tf.read_file(filename)
  image_decoded = tf.image.decode_image(image_string) # (375, 500, 3)
 
  image_resized = tf.image.resize_image_with_crop_or_pad(image_decoded, 200, 200)
  return image_resized
 
 
 
 
with tf.Session() as sess:
 
  print( sess.run( img ).shape  )

读取批量图片的读取图片(b, w, h, c):

import tensorflow as tf
 
import glob
import os
 
'''
  Dataset 批量读取图片
'''
 
def _parse_function(filename):
  # print(filename)
  image_string = tf.read_file(filename)
  image_decoded = tf.image.decode_image(image_string) # (375, 500, 3)
 
  image_decoded = tf.expand_dims(image_decoded, axis=0)
 
  image_resized = tf.image.resize_image_with_crop_or_pad(image_decoded, 200, 200)
  return image_resized
 
 
 
img = _parse_function('../pascal/VOCdevkit/VOC2012/JPEGImages/2007_000068.jpg')
 
# image_resized = tf.image.resize_image_with_crop_or_pad( tf.truncated_normal((1,220,300,3))*10, 200, 200) 这种四维 形式是可以的
 
with tf.Session() as sess:
 
  print( sess.run( img ).shape  ) #直接初始化就可以 ,转换成四维报错误,不知道为什么,若谁想明白,请留言 报错误
  #InvalidArgumentError (see above for traceback): Input shape axis 0 must equal 4, got shape [5]

Databae的操作:

import tensorflow as tf
 
import glob
import os
 
'''
  Dataset 批量读取图片:
  
    原因:
      1. 先定义图片名的list,存放在Dataset中 from_tensor_slices()
      2. 映射函数, 在函数中,对list中的图片进行读取,和resize,细节
        tf.read_file(filename) 返回的是三维的,因为这个每次取出一张图片,放进队列中的,不需要转化为四维
        然后对图片进行resize, 然后每个batch进行访问这个函数 ,所以get_next() 返回的是 [batch, w, h, c ]
      3. 进行shuffle , batch repeat的设置
      
      4. iterator = dataset.make_one_shot_iterator() 设置迭代器
      
      5. iterator.get_next() 获取每个batch的图片
'''
 
def _parse_function(filename):
  # print(filename)
  image_string = tf.read_file(filename)
  image_decoded = tf.image.decode_image(image_string) #(375, 500, 3)
  '''
    Tensor` with type `uint8` with shape `[height, width, num_channels]` for
     BMP, JPEG, and PNG images and shape `[num_frames, height, width, 3]` for
     GIF images.
  '''
 
  # image_resized = tf.image.resize_images(label, [200, 200])
  ''' images 三维,四维的都可以
     images: 4-D Tensor of shape `[batch, height, width, channels]` or
      3-D Tensor of shape `[height, width, channels]`.
    size: A 1-D int32 Tensor of 2 elements: `new_height, new_width`. The
       new size for the images.
  
  '''
  image_resized = tf.image.resize_image_with_crop_or_pad(image_decoded, 200, 200)
 
  # return tf.squeeze(mage_resized,axis=0)
  return image_resized
 
filenames = glob.glob( os.path.join('../pascal/VOCdevkit/VOC2012/JPEGImages', "*." + 'jpg') )
 
 
dataset = tf.data.Dataset.from_tensor_slices((filenames))
 
dataset = dataset.map(_parse_function)
 
dataset = dataset.shuffle(10).batch(2).repeat(10)
iterator = dataset.make_one_shot_iterator()
 
img = iterator.get_next()
 
with tf.Session() as sess:
  # print( sess.run(img).shape ) #(4, 200, 200, 3)
  for _ in range (10):
    print( sess.run(img).shape )

以上这篇浅谈tensorflow中Dataset图片的批量读取及维度的操作详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • flask SQLAlchemy连接数据库及操作的实现

    flask SQLAlchemy连接数据库及操作的实现

    本文主要介绍了flask SQLAlchemy连接数据库及操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 在Python中利用Into包整洁地进行数据迁移的教程

    在Python中利用Into包整洁地进行数据迁移的教程

    这篇文章主要介绍了在Python中如何利用Into包整洁地进行数据迁移,在数据格式的任意两个格式之间高效地迁移数据,需要的朋友可以参考下
    2015-03-03
  • Python使用Pandas对csv文件进行数据处理的方法

    Python使用Pandas对csv文件进行数据处理的方法

    这篇文章主要介绍了Python使用Pandas对csv文件进行数据处理的方法,本文通过实例代码相结合给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 在Django的View中使用asyncio的方法

    在Django的View中使用asyncio的方法

    这篇文章主要介绍了在Django的View中使用asyncio的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python中数字以及算数运算符的相关使用

    Python中数字以及算数运算符的相关使用

    这篇文章主要介绍了Python中数字以及算数运算符的相关使用,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-10-10
  • python获取程序执行文件路径的方法(推荐)

    python获取程序执行文件路径的方法(推荐)

    下面小编就为大家分享一篇python获取程序执行文件路径的方法(推荐),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Hadoop中的Python框架的使用指南

    Hadoop中的Python框架的使用指南

    这篇文章主要介绍了Hadoop中的Python框架的使用指南,Hadoop一般使用复杂的Java操作,但通过该框架使得Python脚本操作Hadoop成为了可能,需要的朋友可以参考下
    2015-04-04
  • Python中标准库array数组操作举例详解

    Python中标准库array数组操作举例详解

    这篇文章主要介绍了Python中标准库array数组操作的相关资料,Python的array模块提供了固定类型数组类,用于高效存储同类型元素,节省内存并支持数值计算,需要的朋友可以参考下
    2025-04-04
  • python 安装移动复制第三方库操作

    python 安装移动复制第三方库操作

    这篇文章主要介绍了python 安装移动复制第三方库操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 对IPython交互模式下的退出方法详解

    对IPython交互模式下的退出方法详解

    今天小编就为大家分享一篇对IPython交互模式下的退出方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02

最新评论