記錄,成為更好的自己影象基本知識
如何用張量來表達?
指定3-d張量:[height,weight,channels]。如:[200,200,3]:200長200寬3通道。
每乙個樣本必須保持特徵值數量一樣。
影象讀取api
影象讀取器
影象解碼器
讀取**
def picread(filelist):
"""讀取狗並轉換成張量
:param filelist: 檔案路徑+名字的列表
:return:每張的張量
"""# 1. 構造檔案佇列
file_queue = tf.train.string_input_producer(filelist)
# 2. 構造閱讀器
reader = tf.wholefilereader()
key, value = reader.read(file_queue)
print(value)
# 3. 構造解碼器,對讀取的進行解碼
image = tf.image.decode_jpeg(value)
print(image)
# 4. 處理的大小(統一大小)
image_resize = tf.image.resize_images(image,[200,200])
print(image_resize)
# 注意:一定要把樣本的形狀固定,在批處理的時候要求所有資料形狀必須定義
image_resize.set_shape([200,200,3])
print(image_resize)
# 5. 進行批處理
image_batch = tf.train.batch([image_resize], batch_size=10,num_threads=1, capacity=10)
print(image_batch)
return image_batch
# 讀取
if __name__=="__main__":
# 1. 找到檔案,放入列表
file_name = os.listdir("./data/dog")
filelist = [os.path.join("./data/dog",file) for file in file_name]
# print(file_name)
image_batch = picread(filelist)
# 開啟會話
with tf.session() as sess:
# 開啟執行緒協調器
coord = tf.train.coordinator()
# 開啟讀取檔案的執行緒
threads = tf.train.start_queue_runners(sess, coord=coord)
# 列印讀取內容
print(sess.run([image_batch]))
# **子執行緒
coord.request_stop()
coord.join(threads)
執行緒佇列與IO操作(一)
記錄,成為更好的自己 io操作相對於cpu的計算來說,速度較慢。現在要讀2g的檔案,一次性讀取資料,消耗記憶體。一次性進行訓練。關鍵的問題在於速度慢,訓練的模型都在等資料輸入到模型中。佇列與佇列管理器 tensorflow佇列 在訓練樣本的時候,希望讀入的訓練樣本時讀取的資料是有序的 完成乙個出佇列...
Tensorflow 順序佇列與IO操作
cpu負責tensorflow的計算,io負責讀取檔案 由於速度上的差異,通常做法是 主線程進行模型訓練,子執行緒讀取資料,二者通過佇列進行資料傳輸 相當於主線程從佇列讀資料,子程序往佇列放資料 在使用tensorflow進行非同步計算時,佇列是一種強大的機制。乙個簡單的例子。先建立乙個 先入先出 ...
多執行緒下的IO操作
今天考慮優化專案中檔案操作,專案中有許多批量刪除檔案的操作,當檔案很多時,刪除操作會比較費時 1s 2s的時間也顯得有點慢了 更何況10s以上,想要通過多執行緒來同時處理多個檔案的刪除,在程式中使用了threadpool和parallel想要加速刪除,但是效果並沒有預期的明顯,總耗時甚至還有所提公升...