您可以使用
tf.py_func包装
load_audio_file()。
import tensorflow as tftf.enable_eager_execution()def load_audio_file(file_path): # you should depre bytes type to string type print("file_path: ",bytes.depre(file_path),type(bytes.depre(file_path))) return file_pathtrain_dataset = tf.data.Dataset.list_files('clean_4s_val/*.wav')train_dataset = train_dataset.map(lambda x: tf.py_func(load_audio_file, [x], [tf.string]))for one_element in train_dataset: print(one_element)file_path: clean_4s_val/1.wav <class 'str'>(<tf.Tensor: id=32, shape=(), dtype=string, numpy=b'clean_4s_val/1.wav'>,)file_path: clean_4s_val/3.wav <class 'str'>(<tf.Tensor: id=34, shape=(), dtype=string, numpy=b'clean_4s_val/3.wav'>,)file_path: clean_4s_val/2.wav <class 'str'>(<tf.Tensor: id=36, shape=(), dtype=string, numpy=b'clean_4s_val/2.wav'>,)
*TF 2 *更新
即使将替换
tf.py_func为
tf.py_function,上述解决方案也不适用于TF 2(已在2.2.0中测试)。
InvalidArgumentError: TypeError: descriptor 'depre' requires a 'bytes' object but received a 'tensorflow.python.framework.ops.EagerTensor'
要使其在TF 2中工作,请进行以下更改:
- 删除
tf.enable_eager_execution()
(默认情况下,TF 2中启用了渴望,您可以通过tf.executing_eagerly()
返回进行验证True
) - 替换
tf.py_func
为tf.py_function
- 替换的所有功能的参考
file_path
用file_path.numpy()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)