gpt4 book ai didi

python - 是否可以将 NumPy 函数映射到 tf.data.dataset?

转载 作者:行者123 更新时间:2023-12-03 08:55:26 26 4
gpt4 key购买 nike

我有以下简单的代码:

import tensorflow as tf
import numpy as np

filename = # a list of wav filenames
x = tf.placeholder(tf.string)

def mfcc(x):
feature = # some function written in NumPy to convert a wav file to MFCC features
return feature

mfcc_fn = lambda x: mfcc(x)

# create a training dataset
train_dataset = tf.data.Dataset.from_tensor_slices((x))
train_dataset = train_dataset.repeat()
train_dataset = train_dataset.map(mfcc_fn)
train_dataset = train_dataset.batch(100)
train_dataset = train_dataset.prefetch(buffer_size=1)

# create an iterator and iterate over training dataset
iterator = tf.data.Iterator.from_structure(train_dataset.output_types, train_dataset.output_shapes)
train_iterator = iterator.make_initializer(train_dataset)

with tf.Session() as sess:
sess.run(train_iterator, feed_dict={x: filename})

基本上,代码创建一个 tf.data.dataset 对象,该对象加载 wav 文件并将其转换为 mfcc 功能。在这里,数据转换发生在 train_dataset.map(mfcc_fn) 处,我将用 NumPy 编写的 mfcc 函数应用于所有输入数据。

显然,该代码在这里不起作用,因为 NumPy 不支持对 tf.placeholder 对象进行操作。如果我必须在 NumPy 中编写函数,是否可以将函数映射到 tf.data.dataset 的输入?我不使用 TensorFlow 的内置 MFCC 特征转换的原因是,TensorFlow 中的 FFT 函数提供的输出与其 NumPy 对应函数显着不同(如图所示 here ),并且我正在构建的模型很容易使用使用生成的 MFCC 特征NumPy。

最佳答案

您可以通过tf.py_func来实现这一点函数,或tf.py_function (这是较新的版本)。它完全符合您的要求,它将包装您的 numpy 函数,该函数在 tensorflow 操作中对数组进行操作,您可以将其作为数据集图的一部分包含在内。

关于python - 是否可以将 NumPy 函数映射到 tf.data.dataset?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55806857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com