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


Posted in Python onJanuary 20, 2020

三维的读取图片(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图片的批量读取及维度的操作详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pycharm 使用心得(八)如何调用另一文件中的函数
Jun 06 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
Nov 21 Python
python学生管理系统代码实现
Apr 05 Python
python生成不重复随机数和对list乱序的解决方法
Apr 09 Python
对python sklearn one-hot编码详解
Jul 10 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
Apr 11 Python
python 通过视频url获取视频的宽高方式
Dec 10 Python
基于torch.where和布尔索引的速度比较
Jan 02 Python
Python单链表原理与实现方法详解
Feb 22 Python
python实现人机五子棋
Mar 25 Python
pandas数据拼接的实现示例
Apr 16 Python
Pycharm修改python路径过程图解
May 22 Python
使用tensorflow DataSet实现高效加载变长文本输入
Jan 20 #Python
python机器学习库xgboost的使用
Jan 20 #Python
python 爬取马蜂窝景点翻页文字评论的实现
Jan 20 #Python
tensorflow-gpu安装的常见问题及解决方案
Jan 20 #Python
win10安装tensorflow-gpu1.8.0详细完整步骤
Jan 20 #Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
Jan 20 #Python
基于Python获取照片的GPS位置信息
Jan 20 #Python
You might like
为查询结果建立向后/向前按钮
2006/10/09 PHP
php文件操作实例代码
2012/05/10 PHP
PHP中变量引用与变量销毁机制分析
2014/11/15 PHP
CodeIgniter视图使用注意事项
2016/01/20 PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
2017/06/07 PHP
php实现每日签到功能
2018/11/29 PHP
php经典趣味算法实例代码
2020/01/21 PHP
JavaScript实现统计文本框Textarea字数增强用户体验
2012/12/21 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
2014/12/20 Javascript
Javascript 获取鼠标当前的位置实现方法
2016/10/27 Javascript
jQuery和CSS仿京东仿淘宝列表导航菜单
2017/01/04 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
JavaScript使用prototype属性实现继承操作示例
2020/05/22 Javascript
js实现随机圆与矩形功能
2020/10/29 Javascript
跟老齐学Python之做一个小游戏
2014/09/28 Python
详解Python中内置的NotImplemented类型的用法
2015/03/31 Python
python实现识别相似图片小结
2016/02/22 Python
Anaconda多环境多版本python配置操作方法
2017/09/12 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
CSS3 特效范例整理
2011/08/22 HTML / CSS
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
销售副总经理岗位职责
2013/12/11 职场文书
农民工讨薪标语
2014/06/26 职场文书
电工实训报告总结
2014/11/05 职场文书
委托公证书样本
2015/01/23 职场文书
大学生团日活动总结
2015/05/06 职场文书
公司宣传语大全
2015/07/13 职场文书
病房管理制度范本
2015/08/06 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书
《西游记》读后感(3篇)
2019/09/20 职场文书
ElementUI实现el-form表单重置功能按钮
2021/07/21 Javascript
基于Redis的List实现特价商品列表功能
2021/08/30 Redis
CentOS8.4安装Redis6.2.6的详细过程
2021/11/20 Redis
Oracle配置dblink访问PostgreSQL的操作方法
2022/03/21 PostgreSQL