我正在進行音頻序列學習,需要加載音頻數據。目前,我依靠tf.decode_csv
將一對文件名和標籤加載到Tensorflow隊列中。但是,我然後想要真正閱讀該文件並使用其他Python庫進行處理。然而,CSV解碼器/出列操作總是返回張量操作,因此不可能與其他Python庫進行互操作。有關如何將TF流操作與外部庫混合的任何想法?使用常規Python混合隊列操作以進行數據加載
file_path = tf.train.string_input_producer([csv_path])
reader = tf.TextLineReader()
_, csv_content = reader.read(file_path)
decode_op = tf.decode_csv(csv_content, record_defaults=[[""], [0]])
enqueue_ops.append(examples_queue.enqueue(decode_op))
tf.train.queue_runner.add_queue_runner(
tf.train.queue_runner.QueueRunner(examples_queue, enqueue_ops))
...
sound_path, label_index = examples_queue.dequeue() <--- !!!!
data = read_wav(sound_path)
的sound_path
是D型string
張量,但我無法真正施展/它轉換成一個Python字符串與read_wav
LIB兼容性。
任何想法?
我不知道'tf.py_func':O優秀答案,+1 – nessuno
是的,它是添加自定義操作的最簡單方法,但它只能在CPU上計算(所以如果數據需要從GPU傳輸數據它) –
即使我將函數封裝爲'tf.py_func',輸入參數仍然是一個CSVDecode張量。如何「投射」成一個字符串?在操作/功能定義時,尚未啓動會話。換句話說,輸入參數不是一個numpy數據類型。 – Tom