lol*_*ter 5 python tensorflow tensorflow-datasets
关于这一点的几个问题
对于我想在Tensorflow中执行以下操作的情况(假设我通过加载WAV文件创建训练示例):
import tensorflow as tf
def _some_audio_preprocessing_func(filename):
# ... some logic here which mostly uses Tensorflow ops ...
with tf.Session(graph=tf.Graph()) as sess:
wav_filename_placeholder = tf.placeholder(tf.string, [])
wav_loader = io_ops.read_file(wav_filename_placeholder)
wav_decoder = contrib_audio.decode_wav(wav_loader, desired_channels=1)
data = sess.run(
[wav_decoder],
feed_dict={wav_filename_placeholder: filename})
return data
dataset = tf.data.Dataset.list_files('*.wav')
dataset = dataset.map(_some_preprocessing_func)
Run Code Online (Sandbox Code Playgroud)
谢谢!
使用时Dataset.map(map_func),TensorFlow为函数中创建的所有操作定义子图map_func,并安排在与图的其余部分相同的会话中有效地执行它.几乎从不需要创建内部tf.Graph或tf.Session内部map_func:如果您的解析函数由TensorFlow操作组成,则这些操作可以直接嵌入到定义输入管道的图形中.
使用的代码的修改版本tf.data如下所示:
import tensorflow as tf
from tensorflow.contrib.framework.python.ops import audio_ops as contrib_audio
def _some_audio_preprocessing_func(filename):
wav_loader = tf.read_file(filename)
return contrib_audio.decode_wav(wav_loader, desired_channels=1)
dataset = tf.data.Dataset.list_files('*.wav')
dataset = dataset.map(_some_preprocessing_func)
Run Code Online (Sandbox Code Playgroud)
如果您map_func包含要应用于每个元素的非TensorFlow操作,则应将它们包装在一个tf.py_func()(或者Dataset.from_generator(),如果数据生成过程在Python逻辑中定义).主要的性能含义是,在a中运行的任何代码tf.py_func()都受Global Interpreter Lock的约束,因此我通常建议尝试为性能至关重要的任何内容查找本机TensorFlow实现.
| 归档时间: |
|
| 查看次数: |
4644 次 |
| 最近记录: |