python生成tensorflow输入输出的图像格式的方法

TensorFLow能够识别的图像文件,可以通过numpy,使用tf.Variable或者tf.placeholder加载进tensorflow;也可以通过自带函数(tf.read)读取,当图像文件过多时,一般使用pipeline通过队列的方法进行读取。下面我们介绍两种生成tensorflow的图像格式的方法,供给tensorflow的graph的输入与输出。

import cv2
import numpy as np
import h5py 

height = 460
width = 345 

with h5py.File('make3d_dataset_f460.mat','r') as f:
  images = f['images'][:] 

image_num = len(images) 

data = np.zeros((image_num, height, width, 3), np.uint8)
data = images.transpose((0,3,2,1)) 

先生成图像文件的路径:ls *.jpg> list.txt

import cv2
import numpy as np 

image_path = './'
list_file = 'list.txt'
height = 48
width = 48 

image_name_list = [] # read image
with open(image_path + list_file) as fid:
  image_name_list = [x.strip() for x in fid.readlines()]
image_num = len(image_name_list) 

data = np.zeros((image_num, height, width, 3), np.uint8) 

for idx in range(image_num):
  img = cv2.imread(image_name_list[idx])
  img = cv2.resize(img, (height, width))
  data[idx, :, :, :] = img

2 Tensorflow自带函数读取

def get_image(image_path):
  """Reads the jpg image from image_path.
  Returns the image as a tf.float32 tensor
  Args:
    image_path: tf.string tensor
  Reuturn:
    the decoded jpeg image casted to float32
  """
  return tf.image.convert_image_dtype(
    tf.image.decode_jpeg(
      tf.read_file(image_path), channels=3),
    dtype=tf.uint8) 

pipeline读取方法

# Example on how to use the tensorflow input pipelines. The explanation can be found here ischlag.github.io.
import tensorflow as tf
import random
from tensorflow.python.framework import ops
from tensorflow.python.framework import dtypes 

dataset_path   = "/path/to/your/dataset/mnist/"
test_labels_file = "test-labels.csv"
train_labels_file = "train-labels.csv" 

test_set_size = 5 

IMAGE_HEIGHT = 28
IMAGE_WIDTH  = 28
NUM_CHANNELS = 3
BATCH_SIZE  = 5 

def encode_label(label):
 return int(label) 

def read_label_file(file):
 f = open(file, "r")
 filepaths = []
 labels = []
 for line in f:
  filepath, label = line.split(",")
  filepaths.append(filepath)
  labels.append(encode_label(label))
 return filepaths, labels 

# reading labels and file path
train_filepaths, train_labels = read_label_file(dataset_path + train_labels_file)
test_filepaths, test_labels = read_label_file(dataset_path + test_labels_file) 

# transform relative path into full path
train_filepaths = [ dataset_path + fp for fp in train_filepaths]
test_filepaths = [ dataset_path + fp for fp in test_filepaths] 

# for this example we will create or own test partition
all_filepaths = train_filepaths + test_filepaths
all_labels = train_labels + test_labels 

all_filepaths = all_filepaths[:20]
all_labels = all_labels[:20] 

# convert string into tensors
all_images = ops.convert_to_tensor(all_filepaths, dtype=dtypes.string)
all_labels = ops.convert_to_tensor(all_labels, dtype=dtypes.int32) 

# create a partition vector
partitions = [0] * len(all_filepaths)
partitions[:test_set_size] = [1] * test_set_size
random.shuffle(partitions) 

# partition our data into a test and train set according to our partition vector
train_images, test_images = tf.dynamic_partition(all_images, partitions, 2)
train_labels, test_labels = tf.dynamic_partition(all_labels, partitions, 2) 

# create input queues
train_input_queue = tf.train.slice_input_producer(
                  [train_images, train_labels],
                  shuffle=False)
test_input_queue = tf.train.slice_input_producer(
                  [test_images, test_labels],
                  shuffle=False) 

# process path and string tensor into an image and a label
file_content = tf.read_file(train_input_queue[0])
train_image = tf.image.decode_jpeg(file_content, channels=NUM_CHANNELS)
train_label = train_input_queue[1] 

file_content = tf.read_file(test_input_queue[0])
test_image = tf.image.decode_jpeg(file_content, channels=NUM_CHANNELS)
test_label = test_input_queue[1] 

# define tensor shape
train_image.set_shape([IMAGE_HEIGHT, IMAGE_WIDTH, NUM_CHANNELS])
test_image.set_shape([IMAGE_HEIGHT, IMAGE_WIDTH, NUM_CHANNELS]) 

# collect batches of images before processing
train_image_batch, train_label_batch = tf.train.batch(
                  [train_image, train_label],
                  batch_size=BATCH_SIZE
                  #,num_threads=1
                  )
test_image_batch, test_label_batch = tf.train.batch(
                  [test_image, test_label],
                  batch_size=BATCH_SIZE
                  #,num_threads=1
                  ) 

print "input pipeline ready" 

with tf.Session() as sess: 

 # initialize the variables
 sess.run(tf.initialize_all_variables()) 

 # initialize the queue threads to start to shovel data
 coord = tf.train.Coordinator()
 threads = tf.train.start_queue_runners(coord=coord) 

 print "from the train set:"
 for i in range(20):
  print sess.run(train_label_batch) 

 print "from the test set:"
 for i in range(10):
  print sess.run(test_label_batch) 

 # stop our queue threads and properly close the session
 coord.request_stop()
 coord.join(threads)
 sess.close()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • Tensorflow简单验证码识别应用
  • TensorFlow在MAC环境下的安装及环境搭建
  • TensorFlow安装及jupyter notebook配置方法
  • python使用tensorflow保存、加载和使用模型的方法
  • 初探TensorFLow从文件读取图片的四种方式
  • Tensorflow 利用tf.contrib.learn建立输入函数的方法
  • TensorFlow实现创建分类器
  • TensorFlow高效读取数据的方法示例
(0)

相关推荐

  • TensorFlow高效读取数据的方法示例

    概述 最新上传的mcnn中有完整的数据读写示例,可以参考. 关于Tensorflow读取数据,官网给出了三种方法: 供给数据(Feeding): 在TensorFlow程序运行的每一步, 让Python代码来供给数据. 从文件读取数据: 在TensorFlow图的起始, 让一个输入管线从文件中读取数据. 预加载数据: 在TensorFlow图中定义常量或变量来保存所有数据(仅适用于数据量比较小的情况). 对于数据量较小而言,可能一般选择直接将数据加载进内存,然后再分batch输入网络进行训练(t

  • TensorFlow安装及jupyter notebook配置方法

    tensorflow利用anaconda在ubuntu下安装方法及jupyter notebook运行目录及远程访问配置 Ubuntu下安装Anaconda bash ~/file_path/file_name.sh 出现许可后可按Ctrl+C跳过,yes同意. 安装完成后询问是否加入path路径,亦可自行修改文件内容 关闭命令台重开 python -V 可查看是否安装成功 修改anaconda的python版本,以符合tf要求 conda install python=3.5 Anaconda

  • Tensorflow 利用tf.contrib.learn建立输入函数的方法

    在实际的业务中,可能会遇到很大量的特征,这些特征良莠不齐,层次不一,可能有缺失,可能有噪声,可能规模不一致,可能类型不一样,等等问题都需要我们在建模之前,先预处理特征或者叫清洗特征.那么这清洗特征的过程可能涉及多个步骤可能比较复杂,为了代码的简洁,我们可以将所有的预处理过程封装成一个函数,然后直接往模型中传入这个函数就可以啦~~~ 接下来我们看看究竟如何做呢? 1. 如何使用input_fn自定义输入管道 当使用tf.contrib.learn来训练一个神经网络时,可以将特征,标签数据直接输入到

  • 初探TensorFLow从文件读取图片的四种方式

    本文记录一下TensorFLow的几种图片读取方法,官方文档有较为全面的介绍. 1.使用gfile读图片,decode输出是Tensor,eval后是ndarray import matplotlib.pyplot as plt import tensorflow as tf import numpy as np print(tf.__version__) image_raw = tf.gfile.FastGFile('test/a.jpg','rb').read() #bytes img =

  • python使用tensorflow保存、加载和使用模型的方法

    使用Tensorflow进行深度学习训练的时候,需要对训练好的网络模型和各种参数进行保存,以便在此基础上继续训练或者使用.介绍这方面的博客有很多,我发现写的最好的是这一篇官方英文介绍: http://cv-tricks.com/tensorflow-tutorial/save-restore-tensorflow-models-quick-complete-tutorial/ 我对这篇文章进行了整理和汇总. 首先是模型的保存.直接上代码: #!/usr/bin/env python #-*- c

  • TensorFlow在MAC环境下的安装及环境搭建

    给大家分享一下TensorFlow在MAC系统中的安装步骤以及环境搭建的操作流程. TensorFlow 底层的图模型结构清晰,容易改造:支持分布式训练:可视化效果好.如果做长期项目,接触较大数据集的话,TensorFlow很适用,而且谷歌也在不断优化完备它,对于使用深度学习朋友,TensorFlow是一个很好的工具. 在学习了一段时间台大李宏毅关于deep learning的课程,以及一些其他机器学习的书之后,终于打算开始动手进行一些实践了. 感觉保完研之后散养状态下,学习效率太低了,于是便想

  • TensorFlow实现创建分类器

    本文实例为大家分享了TensorFlow实现创建分类器的具体代码,供大家参考,具体内容如下 创建一个iris数据集的分类器. 加载样本数据集,实现一个简单的二值分类器来预测一朵花是否为山鸢尾.iris数据集有三类花,但这里仅预测是否是山鸢尾.导入iris数据集和工具库,相应地对原数据集进行转换. # Combining Everything Together #---------------------------------- # This file will perform binary c

  • Tensorflow简单验证码识别应用

    简单的Tensorflow验证码识别应用,供大家参考,具体内容如下 1.Tensorflow的安装方式简单,在此就不赘述了. 2.训练集训练集以及测试及如下(纯手工打造,所以数量不多): 3.实现代码部分(参考了网上的一些实现来完成的) main.py(主要的神经网络代码) from gen_check_code import gen_captcha_text_and_image_new,gen_captcha_text_and_image from gen_check_code import

  • python生成tensorflow输入输出的图像格式的方法

    TensorFLow能够识别的图像文件,可以通过numpy,使用tf.Variable或者tf.placeholder加载进tensorflow:也可以通过自带函数(tf.read)读取,当图像文件过多时,一般使用pipeline通过队列的方法进行读取.下面我们介绍两种生成tensorflow的图像格式的方法,供给tensorflow的graph的输入与输出. import cv2 import numpy as np import h5py height = 460 width = 345 w

  • Python生成不重复随机值的方法

    本文实例讲述了Python生成不重复随机值的方法.分享给大家供大家参考.具体分析如下: 这里从一列表中,生成不重复的随机值 算法实现如下: import random total = 100 li = [i for i in range(total)] res = [] num = 20 for i in range(num): t = random.randint(i,total-1) res.append(li[t]) li[t], li[i] = li[i], li[t] print re

  • python生成随机密码或随机字符串的方法

    本文实例讲述了python生成随机密码或随机字符串的方法.分享给大家供大家参考.具体实现方法如下: import string,random def makePassword(minlength=5,maxlength=25): length=random.randint(minlength,maxlength) letters=string.ascii_letters+string.digits # alphanumeric, upper and lowercase return ''.joi

  • Python生成MD5值的两种方法实例分析

    本文实例讲述了Python生成MD5值的两种方法.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- import datetime # NO.1 使用MD5 import md5 src = 'this is a md5 test.' m1 = md5.new() m1.update(src) print m1.hexdigest() 运行结果: 174b086fc6358db6154bd951a8947837 # -*- coding:utf-8 -*- # NO

  • python生成requirements.txt的两种方法

    python项目如何在另一个环境上重新构建项目所需要的运行环境依赖包? 使用的时候边记载是个很麻烦的事情,总会出现遗漏的包的问题,这个时候手动安装也很麻烦,不能确定代码报错的需要安装的包是什么版本.这些问题,requirements.txt都可以解决! 生成requirements.txt,有两种方式: 第一种 适用于 单虚拟环境的情况: : pip freeze > requirements.txt 为什么只适用于单虚拟环境?因为这种方式,会将环境中的依赖包全都加入,如果使用的全局环境,则下载

  • Python生成8位随机字符串的方法分析

    本文实例讲述了Python生成8位随机字符串的方法.分享给大家供大家参考,具体如下: #!/usr/bin/env python # -*- coding: utf-8 -*- import random import string #第一种方法 seed = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+=-" sa = [] for i in range(8): sa.a

  • 用python生成1000个txt文件的方法

    问题,用python生成如下所示的1000个txt文件? 解答: import os for i in range(0,1001): os.mknod("./a/%04d.txt"%i) 以上这篇用python生成1000个txt文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • python生成遍历暴力破解密码的方法

    python生成遍历暴力破解密码(这里已遍历暴力破解rar为例,只提供生成密码以及遍历密码) 这个也就是提供一个思路,需求是这样的,我XX的闺蜜有个rar的压缩包,不知道他是从哪里挣来的,说这个对他比较重要,但是有密码打不开,唉,可怜了我的电脑了 因为这个是暴力破解,是吧所有的密码进行的遍历,也就是从1到....无穷的列举出来,然后按个密码去撞,撞开了就开了,建议大家买个云服务器进行破解哈,因像这种的第一,不知道密码是几位的,第二还有特殊符号的,唉,破解时间太长了,就用8位密码来说把,全部8位测

  • python人工智能tensorflow函数tf.get_variable使用方法

    目录 参数数量及其作用 例子 参数数量及其作用 该函数共有十一个参数,常用的有: 名称name 变量规格shape 变量类型dtype 变量初始化方式initializer 所属于的集合collections def get_variable(name, shape=None, dtype=None, initializer=None, regularizer=None, trainable=True, collections=None, caching_device=None, partiti

  • python人工智能tensorflow函数tf.get_collection使用方法

    目录 参数数量及其作用 例子 参数数量及其作用 该函数共有两个参数,分别是key和scope. def get_collection(key, scope=None) Wrapper for Graph.get_collection() using the default graph. See tf.Graph.get_collection for more details. Args: key: The key for the collection. For example, the `Gra

随机推荐