使用TensorFlow编写常用模块的Python代码示例
将数据转化成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代码示例的更多相关文章
- 学习TensorFlow,浅析MNIST的python代码
在github上,tensorflow的star是22798,caffe是10006,torch是4500,theano是3661.作为小码农的我,最近一直在学习tensorflow,主要使用pyth ...
- 编写高质量的Python代码系列(八)之部署
Python提供了一些工具,使我们可以把软件部署到不同的环境中.它也提供了一些模块,令开发者可以把程序编写的更加健壮.本章讲解如何使用Python调试.优化并测试程序,以提升其质量与性能. 第五十四条 ...
- 编写高质量的Python代码系列(一)之用Pythonic方式来思考
Python开发者用Pythonic这个形容词来描述具有特定风格的代码.这种风格是大家在使用Python语言进行编程并相互协作的过程中逐渐形成的习惯.那么,如何以改风格完成常见的Python编程工作呢 ...
- 编写高质量的Python代码系列(七)之协作开发
如果多个人要开发同一个Python程序,那就得仔细商量代码的写法了.即使你是一个人开发,也需要理解其他人所写的模块.本节讲解多人协作开发Python程序时所用的标准工具及最佳做法. 第四十九条:为每个 ...
- 编写高质量的Python代码系列(六)之内置模块
Python预装了许多写程序时会用到的重要模块.这些标准软件包与通常意义上的Python语言联系得非常精密,我们可以将其当成语言规范的一部分.本节将会讲解基本的内置模块. 第四十二条:用functoo ...
- 编写高质量的Python代码系列(五)之并发与并行
用Python可以很容易就能写出并发程序,这种程序可以在同一时间做许多间不同的事情.我们也可以通过系统调用.子进程(subprocess)及C语言扩展来实现并行处理. 第三十六条: 用subproce ...
- 编写高质量的Python代码系列(四)之元类及属性
元类(metaclass)及动态属性(dynamic attribute)都是很强大的Python特性,然后他们也可能导致及其古怪.及其突然的行为.本节讲解这些机制的常见用法,以确保各位程序员写出来的 ...
- 编写高质量的Python代码系列(三)之类与继承
用Python进行编程时,通常需要编写心累,并定义这些类应该如何通过其接口及继承体系与外界交互.本节讲解如何使用类和继承来表达对象所以更具备的行为. 第二十二条:尽量用辅助类来维护程序的状态,而不要用 ...
- 编写高质量的Python代码系列(二)之函数
Python中的函数具备多种特性,这可以简化编程工作.Python函数的某些性质与其他编程语言中的函数相似,但也有性质是Python独有的.本节将介绍如何用函数来表达亿图.提升可复用程度,并减少Bug ...
随机推荐
- Obj文件和Bin文件
本文导读:在用visual studio 编程时,会看到项目文件中含有bin和obj这两个文件夹,那么这两个文件夹具体包含一些什么东西的,具体作用是什么? 一.Bin文件夹 1.用来保存项目生成后程序 ...
- Linux 搭建互信后,仍需要密码验证
修改ssh配置文件: vi /etc/ssh/sshd_config PermitRootLogin no 注释掉
- 2019-03-18 OpenCV Tesseract-OCR 下载 安装 配置(cv2 报错)
OpenCV 下载 安装 配置 1.下载和Python版本对应的版本,此为下载地址 2.安装(在powershell管理员模式下安装) pip3 install .\opencv_python-3.4 ...
- VUE:事件处理和表单输入绑定
事件处理 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...
- VUE:条件渲染和列表渲染
条件渲染 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...
- css不定高度实现垂直居中
1.不知道自己高度和父容器高度的情况下, 利用绝对定位只需要以下三行: parentElement{ position:relative; } childElement{ position: abso ...
- codevs——T2488 绿豆蛙的归宿
http://codevs.cn/problem/2488/ 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Descri ...
- 极路由4pro(HC5962)设置阿里云DDNS
v2ex有个帖子说用Dnspod的API可以一行搞定,不过我既然买的是阿里云的域名还是想尽量用阿里云的API,感觉比较安全,另外修改解析记录后也会自动发邮件通知,所以还是调用阿里云的API吧.阿里云的 ...
- STL_算法_对全部元素排序(sort、stable_sort)
C++ Primer 学习中. . . 简单记录下我的学习过程 (代码为主) //大部分容器适用.不适用于list容器 sort(b,e) sort(b,e,p) stable_sort(b,e) ...
- [TS] Class Properties Public, Private and Read Only Modifiers
In the constructor, we want to set the prop to readonly, you need to do like this: class Superhero { ...