私はオーディオのシーケンス学習に取り組んでおり、オーディオデータをロードする必要があります。現在私はtf.decode_csv
に依存して、ファイル名とラベルのペアをTensorflowキューにロードしています。しかし、私は実際にファイルを読んで、他のPythonライブラリでそれを処理したいと思います。しかし、CSVデコーダ/デキュー操作は常に他のPythonライブラリとの相互運用性を不可能にするテンソル操作を返します。 TFのストリーミング操作を外部のライブラリとどのように組み合わせるかについてのアイデアはありますか? sound_path
データローディングのために通常の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)
は、DTYPE string
のテンソルであるが、私は実際に/キャストread_wav
LIBとの互換性のためのPython文字列に変換することができません。
アイデア?
私は 'tf.py_func'を知りませんでした:O優れた答え、+1 – nessuno
ええ、それはカスタム操作を追加するもっとも簡単な方法ですが、CPU上でのみ計算されるので(GPUからデータを転送する必要がありますそれ) –
私は関数を 'tf.py_func'としてラップしましたが、入力引数はまだCSVDecode Tensorです。どのように文字列にキャストできますか?操作/機能定義の時点では、セッションはまだ開始されていません。つまり、入力引数はnumpyデータ型ではありません。 – Tom