浅谈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基础教程之获取本机ip数据包示例
Feb 10 Python
详解在Python程序中使用Cookie的教程
Apr 30 Python
深入解析Python中的__builtins__内建对象
Jun 21 Python
Python操作MongoDB详解及实例
May 18 Python
Python多线程同步---文件读写控制方法
Feb 12 Python
Python子类继承父类构造函数详解
Feb 19 Python
Python利用itchat库向好友或者公众号发消息的实例
Feb 21 Python
Python使用matplotlib 模块scatter方法画散点图示例
Sep 27 Python
Python3.7 读取 mp3 音频文件生成波形图效果
Nov 05 Python
python中安装django模块的方法
Mar 12 Python
使用Keras 实现查看model weights .h5 文件的内容
Jun 09 Python
Django实现内容缓存实例方法
Jun 30 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
8个出色的WordPress SEO插件收集
2011/02/26 PHP
PHP 关于访问控制的和运算符优先级介绍
2013/07/08 PHP
php中explode的负数limit用法分析
2015/02/27 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
2021/03/09 PHP
JavaScript代码复用模式实例分析
2012/12/02 Javascript
window.onerror()的用法与实例分析
2016/01/27 Javascript
jquery.serialize() 函数语法及简单实例
2016/07/08 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
2016/07/14 Javascript
功能强大的Bootstrap使用手册(一)
2016/08/02 Javascript
js变量提升深入理解
2016/09/16 Javascript
web前端开发upload上传头像js示例代码
2016/10/22 Javascript
基于 Vue 的树形选择组件的示例代码
2017/08/18 Javascript
微信小程序商品详情页规格属性选择示例代码
2017/10/30 Javascript
vue基础之使用get、post、jsonp实现交互功能示例
2019/03/12 Javascript
详解vue 路由跳转四种方式 (带参数)
2019/04/28 Javascript
layui实现数据表格自定义数据项
2019/10/26 Javascript
[04:26]2014DOTA2国际邀请赛-Newbee顺利进入胜者组决赛 独家专访战神7
2014/07/19 DOTA
[01:01:42]Secret vs Optic Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
Python工程师面试题 与Python Web相关
2016/01/14 Python
使用简单工厂模式来进行Python的设计模式编程
2016/03/01 Python
python 遍历目录(包括子目录)下所有文件的实例
2018/07/11 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
2018/10/11 Python
python属于解释型语言么
2020/06/15 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
CSS3媒体查询Media Queries基础学习教程
2016/02/29 HTML / CSS
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
5 个强大的HTML5 API 函数推荐
2014/11/19 HTML / CSS
美国爆米花工厂:The Popcorn Factory
2019/09/14 全球购物
薪酬专员岗位职责
2014/02/18 职场文书
淘宝活动总结范文
2014/06/26 职场文书
我心目中的好老师活动方案
2014/08/19 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
学习普通话的体会
2014/11/07 职场文书
长江三峡导游词
2015/01/31 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书
HR必备:销售经理聘用合同范本
2019/08/21 职场文书