浅谈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 相关文章推荐
跟老齐学Python之编写类之三子类
Oct 11 Python
用Python编写一个基于终端的实现翻译的脚本
Apr 24 Python
Python将阿拉伯数字转换为罗马数字的方法
Jul 10 Python
Python 和 JS 有哪些相同之处
Nov 23 Python
python3大文件解压和基本操作
Dec 15 Python
Python根据指定日期计算后n天,前n天是哪一天的方法
May 29 Python
mac下给python3安装requests库和scrapy库的实例
Jun 13 Python
详解python中的json和字典dict
Jun 22 Python
对Python多线程读写文件加锁的实例详解
Jan 14 Python
Python倒排索引之查找包含某主题或单词的文件
Nov 13 Python
利用Python绘制Jazz网络图的例子
Nov 21 Python
Django数据库(SQlite)基本入门使用教程
Jul 07 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
牡丹941资料
2021/03/01 无线电
Banner程序
2006/10/09 PHP
PHP 魔术函数使用说明
2010/05/14 PHP
Notice: Undefined index: page in E:\PHP\test.php on line 14
2010/11/02 PHP
javascript,php获取函数参数对象的代码
2011/02/03 PHP
PHP设计模式 注册表模式
2012/02/05 PHP
PHP结合Ueditor并修改图片上传路径
2016/10/16 PHP
利用PHPExcel实现Excel文件的写入和读取
2017/04/26 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
Jquery跨域获得Json时invalid label错误的解决办法
2011/01/11 Javascript
js 优化次数过多的循环 考虑到性能问题
2011/03/05 Javascript
jQuery代码优化 事件委托篇
2011/11/01 Javascript
点击进行复制的JS代码实例
2013/08/23 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
2014/06/30 Javascript
javascript中动态函数用法实例分析
2015/05/14 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
2015/08/14 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
2016/04/26 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
2018/08/14 Javascript
简介Python中用于处理字符串的center()方法
2015/05/18 Python
Python中的FTP通信模块ftplib的用法整理
2016/07/08 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
Python如何批量获取文件夹的大小并保存
2020/03/31 Python
《我的伯父鲁迅先生》教学反思
2014/02/12 职场文书
遥感技术与仪器求职信
2014/02/22 职场文书
教师产假请假条
2014/04/10 职场文书
物理学专业自荐信
2014/06/11 职场文书
作风建设年度心得体会
2014/10/29 职场文书
2014年市场部工作总结
2014/11/25 职场文书
医院办公室主任岗位职责
2015/04/01 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
羊脂球读书笔记
2015/06/30 职场文书
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记