Поэтому я хочу использовать Dataset API для пакетной обработки моего большого набора данных (~ 8 ГБ), поскольку я страдаю от больших простоев при использовании моего графического процессора, поскольку я передаю данные из python в Tensorflow с помощью feed_dict.
Когда я следую инструкциям, упомянутым здесь:
При запуске моего простого кода:
one_hot_dataset = np.load("one_hot_dataset.npy")
dataset = tf.data.Dataset.from_tensor_slices(one_hot_dataset)
Я получаю сообщение об ошибке с TensorFlow 1.8 и Python 3.5:
Traceback (most recent call last):
File "<ipython-input-17-412a606c772f>", line 1, in <module>
dataset = tf.data.Dataset.from_tensor_slices((one_hot_dataset))
File "/anaconda2/envs/tf/lib/python3.5/site-packages/tensorflow/python/data/ops/dataset_ops.py", line 235, in from_tensor_slices
return TensorSliceDataset(tensors)
File "/anaconda2/envs/tf/lib/python3.5/site-packages/tensorflow/python/data/ops/dataset_ops.py", line 1030, in __init__
for i, t in enumerate(nest.flatten(tensors))
File "/anaconda2/envs/tf/lib/python3.5/site-packages/tensorflow/python/data/ops/dataset_ops.py", line 1030, in <listcomp>
for i, t in enumerate(nest.flatten(tensors))
File "/anaconda2/envs/tf/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", line 1014, in convert_to_tensor
as_ref=False)
File "/anaconda2/envs/tf/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", line 1104, in internal_convert_to_tensor
ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
File "/anaconda2/envs/tf/lib/python3.5/site-packages/tensorflow/python/framework/constant_op.py", line 235, in _constant_tensor_conversion_function
return constant(v, dtype=dtype, name=name)
File "/anaconda2/envs/tf/lib/python3.5/site-packages/tensorflow/python/framework/constant_op.py", line 214, in constant
value, dtype=dtype, shape=shape, verify_shape=verify_shape))
File "/anaconda2/envs/tf/lib/python3.5/site-packages/tensorflow/python/framework/tensor_util.py", line 496, in make_tensor_proto
"Cannot create a tensor proto whose content is larger than 2GB.")
ValueError: Cannot create a tensor proto whose content is larger than 2GB.
Как я могу это решить? Я думаю, что причина очевидна, но что думали разработчики tf, ограничив входные данные до 2 ГБ?!? Я действительно не могу понять этого рационального и каков обходной путь при работе с большими наборами данных?
Я довольно много искал в Google, но не смог найти ни одного похожего сообщения об ошибке. Когда я использую FITFH набора данных numpy, вышеуказанные шаги работают без каких-либо проблем.
Мне как-то нужно сказать TensorFlow, что я действительно буду загружать пакет данных за пакетом и, вероятно, хочу предварительно загрузить несколько пакетов, чтобы мой графический процессор был занят. Но кажется, что он пытается загрузить сразу весь набор данных numpy. Итак, в чем преимущество использования API набора данных, поскольку я могу воспроизвести эту ошибку, просто пытаясь загрузить свой набор данных numpy как tf.constant в граф TensorFlow, который, очевидно, не подходит, и я получаю ошибки OOM.
Приветствуются советы и подсказки по устранению неполадок!
(X,)
.(X)
не будет создавать кортеж, это просто бесполезная пара () - person Mohammad Jafar Mashhadi   schedule 14.04.2020