浅谈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 and、or以及and-or语法总结
Apr 14 Python
python实现清屏的方法
Apr 30 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
Jun 23 Python
python opencv实现切变换 不裁减图片
Jul 26 Python
对python csv模块配置分隔符和引用符详解
Dec 12 Python
python自制包并用pip免提交到pypi仅安装到本机【推荐】
Jun 03 Python
python射线法判断检测点是否位于区域外接矩形内
Jun 28 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
Jan 08 Python
使用Python获取当前工作目录和执行命令的位置
Mar 09 Python
Python unittest框架操作实例解析
Apr 13 Python
Python使用pickle进行序列化和反序列化的示例代码
Sep 22 Python
详解Python yaml模块
Sep 23 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
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
PHP查找与搜索数组元素方法总结
2015/06/12 PHP
枚举JavaScript对象的函数
2006/12/22 Javascript
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
JavaScript获取并更改input标签name属性的方法
2015/07/02 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
对js eval()函数的一些见解
2016/08/15 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
原生js实现中奖信息无间隙滚动效果
2017/01/18 Javascript
ECMAScript6变量的解构赋值实例详解
2017/09/19 Javascript
vue mint-ui学习笔记之picker的使用
2017/10/11 Javascript
Webpack devServer中的 proxy 实现跨域的解决
2018/06/15 Javascript
vue实现引入本地json的方法分析
2018/07/12 Javascript
js实现前面自动补全位数的方法
2018/10/10 Javascript
js脚本中执行java后台代码方法解析
2019/10/11 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
js实现简单贪吃蛇游戏
2020/05/15 Javascript
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
pandas处理csv文件的方法步骤
2020/10/16 Python
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
2018/09/10 HTML / CSS
利用html5的websocket实现websocket聊天室
2013/12/12 HTML / CSS
Vans澳大利亚官网:购买鞋子、服装及配件
2019/09/05 全球购物
澳大利亚香水在线商店:City Perfume
2020/09/02 全球购物
《我要的是葫芦》教学反思
2014/02/23 职场文书
品牌推广活动策划方案
2014/08/19 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
幼儿教师师德师风自我评价
2015/03/05 职场文书
警告通知
2015/04/25 职场文书
社区党支部承诺书
2015/04/29 职场文书
2015年见习期个人工作总结
2015/05/28 职场文书
使用Redis实现秒杀功能的简单方法
2021/05/08 Redis
浅谈CSS不规则边框的生成方案
2021/05/25 HTML / CSS
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python
MySQL数据库安装方法与图形化管理工具介绍
2022/05/30 MySQL