前提:

tensorflow --1.13.1
numpy --1.16.2
python --3.6.5

本例转换 泰坦尼克号数据集
链接 密码:n8wz
数据预览:

字段说明:

PassengerId ,乘客的id号,这个我觉得对生存率没影响。因为一个人的id号不会影响我是否生存下来吧。这列可以忽略

Survived ,生存的标号,上面图的数值1表示这个人很幸运,生存了下来。数值0,则表示遗憾。

Pclass ,船舱等级,就是我们坐船有等级之分,像高铁,飞机都有。这个属性会对生产率有影响。因为一般有钱人,权贵才会住头等舱的。保留。

Name ,名字,这个不影响生存率。我觉得可以不用这列数据。可以忽略

Sex , 性别,这个因为全球都说lady first,女士优先,所有这列保留。

Age , 年龄,因为优先保护老幼,这个保留。

SibSp ,兄弟姐妹,就是有些人和兄弟姐妹一起上船的。这个会有影响,因为有可能因为救他们而导致自己没有上救生船船。保留这列

Parch , 父母和小孩。就是有些人会带着父母小孩上船的。这个也可能因为要救父母小孩耽误上救生船。保留

Ticket , 票的编号。这个没有影响吧。

Fare , 费用。这个和Pclass有相同的道理,有钱人和权贵比较有势力和影响力。这列保留

Cabin ,舱号。住的舱号没有影响。忽略。

Embarked ,上船的地方。这列可能有影响。我认为登陆地点不同,可能显示人的地位之类的不一样。我们先保留这列。

字段类型:

1.csv数据转换成tfrecord

这里取了7个进行后续分析,所以只保存其中7个参数

def transform_to_tfrecord():data=pd.read_csv('./data/Titanic-dataset/train.csv')tfrecord_file='train.tfrecords'def int_feature(value):return tf.train.Feature(int64_list=tf.train.Int64List(value=[value]))def float_feature(value):return tf.train.Feature(float_list=tf.train.FloatList(value=[value]))writer=tf.python_io.TFRecordWriter(tfrecord_file)for i in range(len(data)):features=tf.train.Features(feature={"Age":float_feature(data['Age'][i]),"Survived":int_feature(data['Survived'][i]),"Pclass":int_feature(data['Pclass'][i]),"Parch":int_feature(data['Parch'][i]),"SibSp":int_feature(data['SibSp'][i]),"Sex":int_feature(1 if data['Sex'][i]=='male' else 0),"Fare":float_feature(data['Fare'][i]),})example=tf.train.Example(features=features)writer.write(example.SerializeToString())writer.close()

2.tfrecord数据读取

def read_and_decode(train_files,num_threads=2,num_epochs=100,batch_size=10,min_after_dequeue=10):reader=tf.TFRecordReader()filename_queue=tf.train.string_input_producer(train_files,num_epochs=num_epochs)_,serialized_example = reader.read(filename_queue)featuresdict=tf.parse_single_example(serialized_example,features={'Survived':tf.FixedLenFeature([],tf.int64),'Pclass':tf.FixedLenFeature([],tf.int64),'Parch':tf.FixedLenFeature([],tf.int64),'SibSp':tf.FixedLenFeature([],tf.int64),'Sex':tf.FixedLenFeature([],tf.int64),'Age':tf.FixedLenFeature([],tf.float32),'Fare':tf.FixedLenFeature([],tf.float32),})labels=featuresdict.pop('Survived')features=[tf.cast(value,tf.float32) for value in featuresdict.values()]features,labels=tf.train.shuffle_batch([features,labels],batch_size=batch_size,num_threads=num_threads,capacity=min_after_dequeue + 3 * batch_size,min_after_dequeue=min_after_dequeue)return features,labelsdef train_with_queuerunner():x,y=read_and_decode(['./data/Titanic-dataset/train.tfrecords'])with tf.Session() as sess:tf.group(tf.global_variables_initializer(),tf.local_variables_initializer()).run()coord=tf.train.Coordinator()threads=tf.train.start_queue_runners(sess=sess,coord=coord)try:step=0while not coord.should_stop():features,lables=sess.run([x,y])if step % 100==0:print('step %d:'%step,lables)step += 1except tf.errors.OutOfRangeError:print('Done training -- epoch limit reached')finally:coord.request_stop()coord.join(threads)

从TFRecord文件中读出数据,使用TFRecordReader。TFRecordReader是一个算子,因此TensorFlow能够记住tfrecords文件读取的位置,并且始终能返回下一条记录。

tf.train.string_input_producer方法用于定义TFRecord文件作为模型结构的输入部分。该函数输入文件名列表在Session运行时产生文件路径字符串循环队列。

根据产生的文件名,TFRecordReader.read方法打开文件,再由tf.parse_single_example方法解析成一条可用的数据。tf.train.shuffle_batch可以设置内存读取样本的上限与上限训练batch批次的大小等参数,用于定义产生随机生成的batch训练数据包。

在Session的运行中,tf.train.shuffle_batch函数生成batch数据包的过程是作为线程独立运行的。数据输入线程的挂起和运行时机由batch数据的生成函数控制。本例中的tf.train.shuffle_batch函数指定内存保存样本数量的上限capacity和下限min_after_dequeue。当内存的样本数量大于上限capacity时,数据输入线程挂起。反之,当样本数量小于min_after_dequeue时,训练程序挂起。函数start_queue_runners开启对应运行回话Session的所有线程队列并返回线程句柄。Coordinator类对象负责实现数据输入线程的同步。当string_input_producer函数产生无限循环队列时,应取消数据输入与训练程序的线程同步。

数据转换成tfrecord类型并完成读取相关推荐

  1. TensorFlow学习笔记之 bmp格式、txt格式数据转换成tfrecord 格式

    目录 一.前言 二.bmp 格式数据转换成 tfrecord 格式的代码 三.txt 格式数据转换成 tfrecord 格式的代码 一.前言 之前我们讲过了关于 tfrecord 格式的相关内容,在这 ...

  2. 为什么不能用dict()函数将str数据转换成字典类型

    为什么不能用dict()函数将str数据转换成字典类型 这问题很蠢哈,但是以前最开始接触python的时候,正好接触了python的很多数据类型转换的知识点,对于python极为便捷的数据类型互相转换 ...

  3. 将undefault和null的数据转换成bool类型的数据 使用!!

    <script> var o={}; var a=null; console.info(!!o.name); </script> 输出false 此方法是将undefault和 ...

  4. 如何在C++中方便的将float、int等类型数据转换成string类型,并利用ROS中的std_msg/String发布出去

    在ROS系统中有时候我们需要利用标准的消息类型如std_msg/String等进行发布某些数据,这就需要将不同的数据类型进行相互转化,比如: float -->string      int-- ...

  5. 如何将double类型的数据转换成String类型

    在EditText中使用setText()方法要求传入的数据类型为String类型,若想将double类型的数据在此方法中输出,则需要将double类型的数据转成String类型. double d ...

  6. Python将读取到的字符串文本数据转换成数字类型列表和数组

    最近在用Python,做一个小脚本,有个操作就是要读取文本框中的内容然后将其转换成数组对象再进行相关操作.但读取到的文本是字符串类型的,所以,得进行一波小操作了嘿.

  7. Pandas将每列数据转换成列表类型

    示例代码1: import pandas as pddf = pd.read_excel('./test.xlsx') print(df) print("*" * 50) # 方法 ...

  8. Python将经纬度数据转换成浮点数据

    文章目录 前言 一.数据格式 二.代码 总结 前言 最近遇到一个事情,领导让我将一个excel中的经纬度格式的文件转成浮点数的格式,例如:将 东经130°22′33″纬度30°22′33″ 这种数据转 ...

  9. python将一列数据转换成向量_python读取csv和txt数据转换成向量的实例

    python读取csv和txt数据转换成向量的实例 最近写程序需要从文件中读取数据,并把读取的数据转换成向量. 查阅资料之后找到了读取csv文件和txt文件两种方式,下面结合自己的实验过程,做简要记录 ...

最新文章

  1. pandas读取csv文件,变换文件格式,并转换成numpy数组,取出数据
  2. [JZOJ P1291] [DP]添加括号
  3. 数组转换成json key-value形式
  4. c语言穷举算法 枚举法,c语言枚举法 穷举法 ppt课件
  5. [Vue]Scoped Css与Css Modules的区别
  6. Linux 下的/usr/bin /usr/sbin /usr/local/bin /usr/local/sbin区别
  7. 关于HTML的盒子的一些小问题
  8. php抽奖幸运,幸运大转盘-jQuery+PHP实现的抽奖程序
  9. 中国护照可以免签的10个旅游天堂国家(地区)
  10. 关于影响力章节的读后感:第二章
  11. android dfu升级
  12. apt-get: command not found解决方案
  13. C# 操作Word批注(一) 插入、修改、删除Word批注
  14. 深度学习——致命问题之Gradient Vanish
  15. 【pGCYH-01】元旦联欢会
  16. CSS基础:浅谈position
  17. 逆元,欧拉降幂公式,二次剩余
  18. 中国独生子女意外伤害悲情报告
  19. 996是互联网“打工人”的宿命?
  20. SVM(Support Vector Machine)读书笔记三(Soft-margin SVM)

热门文章

  1. 常见漏洞原理及修复方式
  2. 刷题记录:牛客NC15434wyh的迷宫
  3. 如何注册域名?注册域名时要注意些什么?
  4. 学习vue前的准备(繁琐的)
  5. bootstrap中的glyphicon问题
  6. java libvirt,libvirt介绍和使用
  7. php的视频怎么保存,premiere怎么保存剪辑好的视频
  8. 5G对定位技术的影响
  9. 使用WMI来得到系统的服务
  10. 打造新基建AI强大基石,百度智能云Techday首次公开数据众包硬核实力