您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 如何使用tf.data.Dataset.from_generator()向生成器函数发送参数?

5b51 2022/1/14 8:21:33 python 字数 3613 阅读 514 来源 www.jb51.cc/python

我想使用from_generator()函数创建一些tf.data.Dataset.我想向生成器函数(raw_data_gen)发送一个参数.这个想法是生成器函数将根据发送的参数产生不同的数据.通过这种方式,我希望raw_data_gen能够提供培训,验证或测试数据.training_dataset = tf.data.Dataset.from_genera

概述

我想使用from_generator()函数创建一些tf.data.Dataset.我想向生成函数(raw_data_gen)发送一个参数.这个想法是生成函数将根据发送的参数产生不同的数据.通过这种方式,我希望raw_data_gen能够提供培训,验证或测试数据.

training_dataset = tf.data.Dataset.from_generator(raw_data_gen,(tf.float32,tf.uint8),([None,1],[None]),args=([1]))

validation_dataset = tf.data.Dataset.from_generator(raw_data_gen,args=([2]))

test_dataset = tf.data.Dataset.from_generator(raw_data_gen,args=([3]))

我尝试以这种方式调用from_generator()时得到的错误消息是:

TypeError: from_generator() got an unexpected keyword argument 'args'

这是raw_data_gen函数,虽然我不确定你是否需要这个,因为我的预感是问题是调用from_generator():

def raw_data_gen(train_val_or_test):

    if train_val_or_test == 1:        
        #For every filename collected in the list
        for filename,lab in training_filepath_label_dict.items():
            raw_data,samplerate = soundfile.read(filename)
            try: #assume the audio is stereo,ready to be sliced
                raw_data = raw_data[:,0] #raw_data is a np.array,just take first channel with slice
            except IndexError:
                pass #this must be mono audio
            yield raw_data,lab

    elif train_val_or_test == 2:
        #For every filename collected in the list
        for filename,lab in validation_filepath_label_dict.items():
            raw_data,lab

    elif train_val_or_test == 3:
        #For every filename collected in the list
        for filename,lab in test_filepath_label_dict.items():
            raw_data,lab

    else:
        print("generator function called with an argument not in [1,2,3]")
        raise ValueError()

training_dataset = tf.data.Dataset.from_generator(lambda: raw_data_gen(train_val_or_test=1),[None]))
...

现在,我们将一个函数传递给from_generator,该函数不带任何参数,但只是将raw_data_gen作为参数设置为1.您可以对验证和测试集使用相同的方案,分别传递2和3.

总结

以上是编程之家为你收集整理的python – 如何使用tf.data.Dataset.from_generator()向生成器函数发送参数?全部内容,希望文章能够帮你解决python – 如何使用tf.data.Dataset.from_generator()向生成器函数发送参数?所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶