Я хотел бы создать tf.data.Dataset из неизвестного числа тензоров.
Каждый тензор содержится в файле hdf5.
Количество тензоров будет определено во время выполнения.
Кроме того, существует парное отношение для каждого тензора. Это должно быть сохранено в наборе данных.
Текущая попытка:
import deepdish as dd
def createDatasets(n_files):
d = []
r = []
for i in range(n_files):
d.append( (dd.io.load('../data/prepared/clean_'+str(i)+'.h5')['dataset'], dd.io.load('../data/prepared/dirty_'+str(i)+'.h5')['dataset']) )
r.append(d[i][1])
both = tf.data.Dataset.from_tensors(tuple(d))
rfi = tf.data.Dataset.from_tensors(tuple(r))
return both, rfi
Проблема заключается в том, что эти наборы хранятся как одиночная запись в наборе данных.
т.е. количество элементов в каждом наборе данных всегда равно 1, несмотря на количество используемых тензоров.
>>> both, rfi = createDatasets(5)
>>> rfi
<TensorDataset shapes: ((100, 15, 4096, 4), (100, 15, 4096, 4), (100, 15, 4096, 4), (100, 15, 4096, 4), (100, 15, 4096, 4)), types: (tf.complex64, tf.complex64, tf.complex64, tf.complex64, tf.complex64)>
>>> dataset_length = [i for i,_ in enumerate(rfi)][-1] + 1
>>> print(dataset_length)
1
По сути, я хотел бы выполнить sh, чтобы «снять внешние скобки» для формы и типы.