every blog every motto:

0. 前言

生成tfrecords文件

1. 代码部分

1. 导入模块

import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import sklearn
import pandas as pd
import os
import sys
import time
import tensorflow as tf
from tensorflow import kerasprint(tf.__version__)
print(sys.version_info)
for module in mpl,np,pd,sklearn,tf,keras:print(module.__name__,module.__version__)

2. 读取文件名

source_dir = './generate_csv/'
print(os.listdir(source_dir))# 读取文件名
def get_filenames_by_prefix(source_dir,prefix_name):all_files = os.listdir(source_dir)results = []for filename in all_files:if filename.startswith(prefix_name):results.append(os.path.join(source_dir,filename))return resultstrain_filenames = get_filenames_by_prefix(source_dir,'train')
valid_filenames = get_filenames_by_prefix(source_dir,'valid')
test_filenames = get_filenames_by_prefix(source_dir,'test')import pprint
pprint.pprint(train_filenames)
pprint.pprint(valid_filenames)
pprint.pprint(test_filenames)

3. 从csv中读取文件

# 解析dataset 中的一行def parse_csv_line(line,n_fields=9):defs = [tf.constant(np.nan)] * n_fieldsparsed_fields = tf.io.decode_csv(line,record_defaults=defs)x = tf.stack(parsed_fields[0:-1])y = tf.stack(parsed_fields[-1:])return x,y
def csv_reader_dataset(filenames,n_readers=5,batch_size=32,n_parse_threads=5,shuffle_buffer_size=10000):# 1. filename -> datasetdataset = tf.data.Dataset.list_files(filenames)dataset = dataset.repeat() # 重复多少次# 文件名转换成文本内容dataset = dataset.interleave(lambda filename:tf.data.TextLineDataset(filename).skip(1),cycle_length = n_readers)dataset.shuffle(shuffle_buffer_size)# 解析dataset = dataset.map(parse_csv_line,num_parallel_calls=n_parse_threads)dataset = dataset.batch(batch_size)return dataset
batch_size = 32
train_set = csv_reader_dataset(train_filenames,batch_size=batch_size)
valid_set = csv_reader_dataset(valid_filenames,batch_size=batch_size)
test_set = csv_reader_dataset(test_filenames,batch_size=batch_size)

4. 数据写入tf.record

# 将数据写入tf.recorddef serialize_example(x,y):""" Converts x,y to tf.train.Example eand serialize"""input_features = tf.train.FloatList(value = x)label = tf.train.FloatList(value = y)# 转成featurefeatures = tf.train.Features(feature = {"input_features":tf.train.Feature(float_list = input_features),"label":tf.train.Feature(float_list = label)})# 转成exampleexample = tf.train.Example(features = features)return example.SerializeToString() # 序列化def csv_dataset_to_tfrecords(base_filename,dataset,n_shards,steps_per_shard,compression_type=None):options = tf.io.TFRecordOptions(compression_type = compression_type)all_filenames = []for shard_id in range(n_shards):filename_fullpath = '{}_{:05d}-of-{:05d}'.format(base_filename,shard_id,n_shards)with tf.io.TFRecordWriter(filename_fullpath,options) as writer:for x_batch,y_batch in dataset.take(steps_per_shard):for x_example,y_example in zip(x_batch,y_batch):writer.write(serialize_example(x_example,y_example))all_filenames.append(filename_fullpath)return all_filenames
n_shards = 20
train_steps_per_shard = 11610 // batch_size // n_shards
valid_steps_per_shard = 3880 // batch_size // n_shards
test_steps_per_shard = 5170 // batch_size // n_shardsoutput_dir = "generate_tfrecords"
if not os.path.exists(output_dir):os.mkdir(output_dir)train_basename = os.path.join(output_dir,'train')
valid_basename = os.path.join(output_dir,'valid')
test_basename = os.path.join(output_dir,'test')train_tfrecord_filenmaes = csv_dataset_to_tfrecords(train_basename,train_set,n_shards,train_steps_per_shard,None)
valid_tfrecord_filenames = csv_dataset_to_tfrecords(valid_basename,valid_set,n_shards,valid_steps_per_shard,None)
test_tfrecord_filenames = csv_dataset_to_tfrecords(test_basename,test_set,n_shards,valid_steps_per_shard,None)

4.2 生成压缩文件

# 生成压缩文件
n_shards = 20
train_steps_per_shard = 11610 // batch_size // n_shards
valid_steps_per_shard = 3880 // batch_size // n_shards
test_steps_per_shard = 5170 // batch_size // n_shardsoutput_dir = "generate_tfrecords_zip"
if not os.path.exists(output_dir):os.mkdir(output_dir)train_basename = os.path.join(output_dir,'train')
valid_basename = os.path.join(output_dir,'valid')
test_basename = os.path.join(output_dir,'test')train_tfrecord_filenmaes = csv_dataset_to_tfrecords(train_basename,train_set,n_shards,train_steps_per_shard,compression_type="GZIP")
valid_tfrecord_filenames = csv_dataset_to_tfrecords(valid_basename,valid_set,n_shards,valid_steps_per_shard,compression_type="GZIP")
test_tfrecord_filenames = csv_dataset_to_tfrecords(test_basename,test_set,n_shards,valid_steps_per_shard,compression_type="GZIP")

从零基础入门Tensorflow2.0 ----四、17.生成tfrecords文件相关推荐

  1. 视频编码零基础入门(0):零基础,史上最通俗视频编码技术入门

    [来源申明]本文引用了微信公众号"鲜枣课堂"的<视频编码零基础入门>文章内容.为了更好的内容呈现,即时通讯网在引用和收录时内容有改动,转载时请注明原文来源信息,尊重原作 ...

  2. SQL零基础入门学习(四)

    SQL零基础入门学习(三) SQL INSERT INTO 语句 INSERT INTO 语句用于向表中插入新记录. SQL INSERT INTO 语法 INSERT INTO 语句可以有两种编写形 ...

  3. 零基础入门学习Python(17)-函数的参数

    一.形参和实参 参数从调用的角度来说,分为形式参数(parameter)和实际参数(argument) 1.形式参数 形参指的是函数定义的过程中小括号里的参数 2.实际参数 实参指的是函数在被调用的过 ...

  4. Apache Flink 零基础入门(十四)Flink 分布式缓存

    Apache Flink 提供了一个分布式缓存,类似于Hadoop,用户可以并行获取数据. 通过注册一个文件或者文件夹到本地或者远程HDFS等,在getExecutionEnvironment中指定一 ...

  5. 【转】Dynamics CRM 365零基础入门学习(四)Dynamics 使用profiler插件调试流程

    今天我们介绍一种在dynamics开发中经常会用到的调试操作,其中一种调试方式即是profile调试.以下是我在项目开发中记录的调试流程,可供参考使用. 1.打开插件注册工具,会看到install P ...

  6. PHP 零基础入门笔记(8):PHP 文件包含include/require

    PHP 文件包含include/require 在一个 PHP 脚本中,去将另一个文件包含进来 文件包含的作用 实现代码共享重用,协作共同完成一件事 使用被包含文件中的内容:向上包含(所要) 自己的东 ...

  7. bat 变量 文件内容第一行_VBA基础入门(38)FSO生成bat文件后执行的实例

    1.首先,我们回顾下FSO是什么? 文件系统对象FSO的英文全称是File System Object ,这种对象模型提出了有别于传统的文件操作语句处理文件和文件夹的方法.通过采用object.met ...

  8. Pr零基础入门指南笔记三-------------视频效果与转场

    目录 精剪第一步--视频效果与转场 1.三大面板 2.位置 3.效果库 4.常用视频效果 [干货]PR零基础入门指南第四集:PR常用的效果和转场,视频防抖.宽银幕效果.设置默认效果等_哔哩哔哩_bil ...

  9. Java从键盘输入n行字符串_Java十四天零基础入门-Java布尔类型

    不闲聊!!!不扯淡!!!小UP只分享Java相关的资源干货 Java布尔类型 在Java语言中布尔类型的值只包括true和false,没有其他值,不包括1和0,布尔类型的数据在开发中主要使用在逻辑判断 ...

  10. java短除法获取二进制_Java十四天零基础入门-Java的数据类型介绍

    不闲聊!!!不扯淡!!!小UP只分享Java相关的资源干货 本章节目标: 理解数据类型的作用.Java中包括哪些数据类型?常见的八种基本数据类型都有哪些?会用八种基本数据类型声明变量?什么是二进制?原 ...

最新文章

  1. 如何以编程方式退出WPF应用程序?
  2. python实习做什么工作-实习工作 - python挖掘 - 博客园
  3. python double free_python错误:double free或corruption(out):0x0000000001e4b030
  4. java 换行 运算符格式_Java代码样式运算符换行格式
  5. Linux添加授信根证书,linux系统添加根证书 linux证书信任列表
  6. r语言数据变量分段_使用R语言实现数据分段
  7. Java实训项目6:GUI学生信息管理系统 - 实现步骤 - 创建项目
  8. (二)OpenCV Mat常用属性和方法
  9. 人生苦短 我学python之OldBoy21天入门_day01·Python基础语法
  10. 支持Micro USB安卓接口与iphone 8手机的5W无线充电芯片|无线快充芯片小封装SOP8外围简单精简
  11. 1185_SPC560B60L7_ADC0标准通道的Injected转换模式
  12. html中diy的背景怎么透明,自制复古几何无缝纹案背景_html/css_WEB-ITnose
  13. 【uoj#311】[UNR #2]积劳成疾 dp
  14. python三维图形渲染 地图_Python地图可视化三大秘密武器
  15. (附源码)springboot美食分享系统 毕业设计 612231
  16. KaTex数学公式编辑器相关
  17. A2021-A2022年度项目总结(二)
  18. DLINK-DSN1100的安装使用记录
  19. 名人名言 托尔斯泰 富兰克林 马克思 罗兰 培根
  20. AVL树(平衡二叉搜索树)详解及C++代码实现

热门文章

  1. cp命令显示进度条_教程 | Linux常用命令大全
  2. (秒杀项目) 4.9 削峰限流与防刷(核心)
  3. python统计word页码_使用Python(win32com)在MS Word表中插入带页码的字段
  4. strstr区分大小写吗_ONU、机顶盒、路由器,遇到问题你会处理了吗?
  5. NVM:切换node版本后无法使用npm全局包
  6. string类用法Java_Java中String类的用法
  7. 看我如何解决tomcat控制台内容输出乱码的问题?
  8. ML/DL-复习笔记【十】- 分组卷积和深度可分离卷积的区别
  9. 基于TensorRT量化部署RepVGG模型
  10. python让繁琐工作自动化 第12章 web页面抓取