深度學習:tensorflow入門:tf讀入資料
阿新 • • 發佈:2018-12-16
同步讀取資料
import tensorflow as tf
# 模擬一下同步先處理資料,然後才能取訓練資料
# tensorflow中,執行操作有依賴性
# 1、首先定義佇列
Q = tf.FIFOQueue(3, tf.float32)
# 放入一些資料
enq_many = Q.enqueue_many([[0.1, 0.2, 0.3], ])
# 2、定義一些處理資料的螺距,取資料的過程 取資料, +1, 入佇列
out_q = Q.dequeue()
data = out_q + 1
en_q = Q.enqueue(data)
with tf.Session() as sess:
# 初始化佇列
sess.run(enq_many)
# 處理資料
for i in range(100):
sess.run(en_q)
# 訓練資料
for i in range(Q.size().eval()):
print(sess.run(Q.dequeue()))
非同步讀取資料
# 模擬非同步子執行緒 存入樣本 主執行緒 讀取樣本
# 1、定義一個佇列, 1000
Q = tf.FIFOQueue(1000, tf.float32)
# 2、定義子執行緒要做的事情 迴圈 值, +1, 放入隊列當中
var = tf.Variable(0.0)
# 實現一個自增 tf.assign_add
data = tf.assign_add(var, tf.constant(1.0))
en_q = Q.enqueue(data)
# 3、定義佇列管理器op,指定多少個子執行緒,子執行緒該幹什麼事情
qr = tf.train.QueueRunner(Q, enqueue_ops=[en_q] * 2)
# 初始化變數的op
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
# 初始化變數
sess. run(init_op)
# 開啟執行緒管理器
coord = tf.train.Coordinator()
# 真正的開啟子執行緒
threads = qr.create_threads(sess, coord=coord ,start=True)
# 主執行緒,不斷讀取資料訓練
for i in range(300):
print(sess.run(Q.dequeue()))
# 回收執行緒
coord.request_stop()
coord.join(threads)