将数据转化成tfrecords的形式

import os

import tensorflow as tf

import numpy as np

import matplotlib.image as mpimg

import matplotlib

matplotlib.use('Agg')

import matplotlib.pyplot as plt

from scipy import misc

#import driving_data

imageFold = 'X'

imageLabelFile = 'X'

recordsPath = 'X'

recordsName = 'X'

timeSteps = X

maxClipNumInRecord = X

croppedImageHeight = X

resizedImageHeight = X

resizedImageWidth = X

imageChannel = X

recordIndex = 0

clipNumInRecord = 0

writer = tf.python_io.TFRecordWriter(recordsPath + recordsName + str(recordIndex))

clip = np.zeros((resizedImageHeight, resizedImageWidth, imageChannel), dtype = np.float32)

imgNumInClip = 0

imgNumProcessed = 0

imagesNum = len(open(imageLabelFile).readlines())

trainingImageNum = int(imagesNum * 0.8)

mu = 1

sigma = 2

np.random.seed(0)

cnt = -1

with open(imageLabelFile) as f:

for line in f:

if line.split(',')[0][0] == 'f':

continue

cnt = cnt + 1

path = line.split(',')[0]

imagePath = imageFold + path + '.jpg'

img = mpimg.imread(imagePath)

img = misc.imresize(img[-croppedImageHeight:, :, :], [resizedImageHeight, resizedImageWidth]) / 255.0

#print(img.shape)

steeringAngle = np.float32(line.split(',')[1])

clip = np.concatenate((np.array(img, dtype = np.float32), clip), axis = 2)

imgNumInClip += 1

imgNumProcessed += 1

if imgNumProcessed == trainingImageNum + 1:

clip = np.zeros((resizedImageHeight, resizedImageWidth, imageChannel), dtype = np.float32)

clip = np.concatenate((np.array(img, dtype = np.float32), clip), axis = 2)

imgNumInClip = 1

writer.close()

recordIndex = 0

recordsName = 'clipTestingData.tfrecords'

writer = tf.python_io.TFRecordWriter(recordsPath + recordsName + str(recordIndex))

clipNumInRecord = 0

print('Current record is ' + recordsPath + recordsName + str(recordIndex))

continue

if imgNumInClip == timeSteps:

if clipNumInRecord >= maxClipNumInRecord:

writer.close()

recordIndex += 1

writer = tf.python_io.TFRecordWriter(recordsPath + recordsName + str(recordIndex))

clipNumInRecord = 0

print('Current record is ' + recordsPath + recordsName + str(recordIndex))

clipNumInRecord += 1

clip = np.delete(clip, np.s_[-imageChannel :], axis = 2)

if clipNumInRecord % 100 == 0:

print(str(clipNumInRecord))

imgNumInClip -= 1

clipString = clip.reshape(-1)

example = tf.train.Example(features = tf.train.Features(feature = {'steeringAngle': tf.train.Feature(float_list=tf.train.FloatList(value=[steeringAngle])),

'clippedImageArray': tf.train.Feature(float_list=tf.train.FloatList(value=clipString)),

'imagePath': tf.train.Feature(bytes_list=tf.train.BytesList(value=[path]))

}))

writer.write(example.SerializeToString())

writer.close()

使用TensorFlow编写常用模块的Python代码示例的更多相关文章

  1. 学习TensorFlow,浅析MNIST的python代码

    在github上,tensorflow的star是22798,caffe是10006,torch是4500,theano是3661.作为小码农的我,最近一直在学习tensorflow,主要使用pyth ...

  2. 编写高质量的Python代码系列(八)之部署

    Python提供了一些工具,使我们可以把软件部署到不同的环境中.它也提供了一些模块,令开发者可以把程序编写的更加健壮.本章讲解如何使用Python调试.优化并测试程序,以提升其质量与性能. 第五十四条 ...

  3. 编写高质量的Python代码系列(一)之用Pythonic方式来思考

    Python开发者用Pythonic这个形容词来描述具有特定风格的代码.这种风格是大家在使用Python语言进行编程并相互协作的过程中逐渐形成的习惯.那么,如何以改风格完成常见的Python编程工作呢 ...

  4. 编写高质量的Python代码系列(七)之协作开发

    如果多个人要开发同一个Python程序,那就得仔细商量代码的写法了.即使你是一个人开发,也需要理解其他人所写的模块.本节讲解多人协作开发Python程序时所用的标准工具及最佳做法. 第四十九条:为每个 ...

  5. 编写高质量的Python代码系列(六)之内置模块

    Python预装了许多写程序时会用到的重要模块.这些标准软件包与通常意义上的Python语言联系得非常精密,我们可以将其当成语言规范的一部分.本节将会讲解基本的内置模块. 第四十二条:用functoo ...

  6. 编写高质量的Python代码系列(五)之并发与并行

    用Python可以很容易就能写出并发程序,这种程序可以在同一时间做许多间不同的事情.我们也可以通过系统调用.子进程(subprocess)及C语言扩展来实现并行处理. 第三十六条: 用subproce ...

  7. 编写高质量的Python代码系列(四)之元类及属性

    元类(metaclass)及动态属性(dynamic attribute)都是很强大的Python特性,然后他们也可能导致及其古怪.及其突然的行为.本节讲解这些机制的常见用法,以确保各位程序员写出来的 ...

  8. 编写高质量的Python代码系列(三)之类与继承

    用Python进行编程时,通常需要编写心累,并定义这些类应该如何通过其接口及继承体系与外界交互.本节讲解如何使用类和继承来表达对象所以更具备的行为. 第二十二条:尽量用辅助类来维护程序的状态,而不要用 ...

  9. 编写高质量的Python代码系列(二)之函数

    Python中的函数具备多种特性,这可以简化编程工作.Python函数的某些性质与其他编程语言中的函数相似,但也有性质是Python独有的.本节将介绍如何用函数来表达亿图.提升可复用程度,并减少Bug ...

随机推荐

  1. JS面向对像编程四—— prototype 对象

    http://blog.csdn.net/fanwenjieok/article/details/54575560 大部分面向对象的编程语言,都是以“类”(class)作为对象体系的语法基础.Java ...

  2. WiFi无线连接过程中有哪几个主要步骤?

    WiFi无线连接过程中有哪几个主要步骤?[1]在使用WIFI功能时,经常性的操作是打开手机上的WiFi设备,搜索到心目中的热点,输入密码,联网成功,成功上网.这个看似简单的过程,背后却是隐藏着大量的无 ...

  3. Servlet的生命周期和Jsp的生命周期

    Servlet的生命周期: 1)构造方法(第1次访问) 2)init方法(第1次访问) 3)service方法 4)destroy方法 Jsp的生命周期 1)翻译: jsp->java文件 2) ...

  4. criteria的projection做分页

  5. 密信(MeSince),将取代传统电子邮件

    电子邮件发展至今已经有几十年的历史,但仍然是最重要的现代互联网应用之一.在全球范围内,每小时发送的非垃圾邮件数量超过30亿封,从工作场景的使用到个人生活,电子邮件都扮演着不可或缺的角色.但是由于明文电 ...

  6. gcp – 源于CP的高级命令行文件拷贝工具

    作者:linux 出处:http://linux.cn/thread/11868/1/1/ gcp – 源于CP的高级命令行文件拷贝工具 几周前,我们讨论了高级拷贝(修改于cp命令,让其可以显示复制进 ...

  7. BZOJ 1415 [NOI2005]聪聪与可可 (概率DP+dfs)

    题目大意:给你一个无向联通图,节点数n<=1000.聪聪有一个机器人从C点出发向在M点的可可移动,去追赶并吃掉可可,在单位时间内,机器人会先朝离可可最近的节点移动1步,如果移动一步机器人并不能吃 ...

  8. Could not find result map java.util.HashMap

    Could not find result map java.util.HashMap 找不到结果图java.util.HashMap MyBatis 找不到返回的 'resultMap'!把resu ...

  9. php 文件加载方式

    两种加载文件的方式 include require 使用场景: 动态加载文件的时候,使用include,否则使用require. 示例: # 引入php文件--include方式 inlcude(&q ...

  10. 页面关闭或刷新时触发javascript的事件

    当页面在关闭或刷新时提示 window.onbeforeunload(function(){ //判断是关闭还是刷新 1.满足关闭,否则是刷新 if(event.clientX>document ...