[tensorflow] - csv文件讀取

  • 參考

  • 文件流程
    在這裏插入圖片描述

  • csv讀取流程
    在這裏插入圖片描述

  • 函數的流程

在這裏插入圖片描述

import tensorflow as tf
import os

"""
    tensorflow中csv文件的讀取
    1、 先找到文件,構造一個列表
    
    2、 構造一個文件隊列
    
    3、 讀取(read)隊列內容
            csv: 讀取一行
            二進制文件: 指定一個樣本的bytes讀取
            圖片文件: 按一張一張的讀取
    
    4、 解碼(decode)
    tf.decode_csv(records, record_defaults=None,field_delim = None, name=None)
    
    
    5、 批處理(多個樣本)
    批處理大小,和數量無關.取決於該批次處理數量的大小
"""


def csvread(filelist):
    """
    讀取CSV文件
    :param filelist: 文件路徑 + 名字列表
    :return: 讀取的內容
    """

    # 1. 構造文件隊列
    file_queue = tf.train.string_input_producer(filelist)

    # 2. 構造csv閱讀器讀取
    reader = tf.TextLineReader()

    key, value = reader.read(file_queue)

    # 3. 對每行內容進行解密
    # record_defaults: 指定每一個樣本額每一列的類型,指定默認值 [["None"], [4.0]]
    records = [["None"], ["None"]]
    example, label = tf.decode_csv(value, record_defaults=records)

    # 4. 想要讀取多個,需要進行批處理
    example_batch, label_batch = tf.train.batch([example, label], batch_size=9, num_threads=1, capacity=9)
    print(example_batch, label_batch)

    return example_batch, label_batch


if __name__ == "__main__":
    # 1、找到文件,放入列表  路徑 + 名字
    file_name = os.listdir("./data/csvdata/")

    filelist = [os.path.join("./data/csvdata", file) for file in file_name]

    # print(file_name)
    example_batch, label_batch = csvread(filelist)

    # 開啓會話運行結果
    with tf.Session() as sess:
        # 定義一個線程協調器
        coord = tf.train.Coordinator()

        # 開啓讀文件的線程
        threads = tf.train.start_queue_runners(sess, coord=coord)

        # 打印讀取的內容
        print(sess.run([example_batch, label_batch]))

        # 把程序的圖結構寫入事件
        filewriter = tf.summary.FileWriter("./summary/", graph=sess.graph)

        # 回收子線程
        coord.request_stop()

        coord.join(threads)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章