日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

7.2 TensorFlow笔记(基础篇): 生成TFRecords文件

發布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7.2 TensorFlow笔记(基础篇): 生成TFRecords文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

在TensorFlow中進行模型訓練時,在官網給出的三種讀取方式,中最好的文件讀取方式就是將利用隊列進行文件讀取,而且步驟有兩步:
1. 把樣本數據寫入TFRecords二進制文件
2. 從隊列中讀取

TFRecords二進制文件,能夠更好的利用內存,更方便的移動和復制,并且不需要單獨的標記文件
下面官網給出的,對mnist文件進行操作的code,具體代碼請參考:tensorflow-master\tensorflow\examples\how_tos\reading_data\convert_to_records.py

CODE

源碼與解析

解析主要在注釋里

import tensorflow as tf import os import argparse import sysos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'#1.0 生成TFRecords 文件 from tensorflow.contrib.learn.python.learn.datasets import mnistFLAGS = None# 編碼函數如下: def _int64_feature(value):return tf.train.Feature(int64_list=tf.train.Int64List(value=[value]))def _bytes_feature(value):return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))def convert_to(data_set, name):"""Converts a dataset to tfrecords."""images = data_set.imageslabels = data_set.labelsnum_examples = data_set.num_examplesif images.shape[0] != num_examples:raise ValueError('Images size %d does not match label size %d.' %(images.shape[0], num_examples))rows = images.shape[1] # 28cols = images.shape[2] # 28depth = images.shape[3] # 1. 是黑白圖像,所以是單通道filename = os.path.join(FLAGS.directory, name + '.tfrecords')print('Writing', filename)writer = tf.python_io.TFRecordWriter(filename)for index in range(num_examples):image_raw = images[index].tostring()# 寫入協議緩存區,height,width,depth,label編碼成int64類型,image_raw 編碼成二進制example = tf.train.Example(features=tf.train.Features(feature={'height': _int64_feature(rows),'width': _int64_feature(cols),'depth': _int64_feature(depth),'label': _int64_feature(int(labels[index])),'image_raw': _bytes_feature(image_raw)}))writer.write(example.SerializeToString()) # 序列化為字符串writer.close()def main(unused_argv):# Get the data.data_sets = mnist.read_data_sets(FLAGS.directory,dtype=tf.uint8,reshape=False,validation_size=FLAGS.validation_size)# Convert to Examples and write the result to TFRecords.convert_to(data_sets.train, 'train')convert_to(data_sets.validation, 'validation')convert_to(data_sets.test, 'test')if __name__ == '__main__':parser = argparse.ArgumentParser()parser.add_argument('--directory',type=str,default='MNIST_data/',help='Directory to download data files and write the converted result')parser.add_argument('--validation_size',type=int,default=5000,help="""\Number of examples to separate from the training data for the validationset.\""")FLAGS, unparsed = parser.parse_known_args()tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)

運行結果

打印輸出

Extracting MNIST_data/train-images-idx3-ubyte.gz Extracting MNIST_data/train-labels-idx1-ubyte.gz Extracting MNIST_data/t10k-images-idx3-ubyte.gz Extracting MNIST_data/t10k-labels-idx1-ubyte.gz Writing MNIST_data/train.tfrecords Writing MNIST_data/validation.tfrecords Writing MNIST_data/test.tfrecords

文件

相關

  • argparse是python用于解析命令行參數和選項的標準模塊,用于代替已經過時的optparse模塊。argparse模塊的作用是用于解析命令行參數,詳情請參見這里:python中的argparse模塊:http://blog.csdn.net/fontthrone/article/details/76735591
  • 把樣本數據寫入TFRecords二進制文件 : http://blog.csdn.net/fontthrone/article/details/76727412
  • TensorFlow筆記(基礎篇):加載數據之預加載數據與填充數據:http://blog.csdn.net/fontthrone/article/details/76727466
  • TensorFlow筆記(基礎篇):加載數據之從隊列中讀取:http://blog.csdn.net/fontthrone/article/details/76728083
  • 總結

    以上是生活随笔為你收集整理的7.2 TensorFlow笔记(基础篇): 生成TFRecords文件的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。