Tensorflow: Создать набор данных из массива Tensors - PullRequest
0 голосов
/ 21 января 2020

Я хотел бы создать 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, чтобы «снять внешние скобки» для формы и типы.

...