小编das*_*sen的帖子

创建一个输出dict的Tensorflow数据集

我对我的数据集有一个带有“元数据”的字典 {'m1': array_1, 'm2': array_2, ...}.,该数组的每个数组都具有形状(N,...),其中N是样本数。

问题:是否可以创建一个tf.data.Dataset{'meta_1': sub_array_1, 'meta_2': sub_array_2, ...}为数据集iterator.get_next()的每次迭代输出字典?在这里,sub_array_i应该包含一个批处理的第i个元数据,因此应该具有形状(batch_sz,...)。

到目前为止,我尝试使用tf.data.Dataset.from_generator(),如下所示:

N = 100
# dictionary of arrays:
metadata = {'m1': np.zeros(shape=(N,2)), 'm2': np.ones(shape=(N,3,5))} 
num_samples = N

def meta_dict_gen():
    for i in range(num_samples):
        ls = {}
        for key, val in metadata.items():
            ls[key] = val[i]
        yield ls

dataset = tf.data.Dataset.from_generator(meta_dict_gen, output_types=(dict))
Run Code Online (Sandbox Code Playgroud)

问题似乎在output_types=(dict)。上面的代码向我抛出了一个

TypeError:参数'Tout'的预期数据类型不是<class'dict'>。


我正在使用tensorflow 1.8和python 3.6。

python dictionary tensorflow tensorflow-datasets

2
推荐指数
1
解决办法
2570
查看次数