У меня есть dict с «метаданными» для моего набора данных вида {'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))
Проблема с этим, похоже, в output_types=(dict)
. Приведенный выше код вызывает у меня
TypeError: Ожидаемый тип данных для аргумента 'Tout', а не ‹class 'dict'>.
Я использую tenorflow 1.8 и python 3.6.
from_tensor_slices
, я посмотрю, есть ли способ сделать то же самое с _2 _... - person jdehesa   schedule 02.07.2018