Оптимизатор адама Tensorflow ValueError "Ошибка: ни одно из значений не поддерживается". - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь написать сценарий тензорного потока для обучения сегментации изображения, используя структуру графа модели FCN_8s. Я адаптирую код из некоторых онлайн-руководств, и, очевидно, что-то (или многие вещи) я делаю неправильно. Когда я пытаюсь определить оптимизатор с помощью Adam Optimizer (см. Ниже), я получаю valueError, указывающее Tried to convert 'values' to a tensor and failed. Error: None values not supported.

Вот как я инициализирую оптимизатор и определяю функцию потерь, которая вызывается позже в tf.session ()

     cross_entropies = tf.nn.softmax_cross_entropy_with_logits_v2(logits=flat_logits,
                                                             labels=flat_labels)

     cross_entropy_sum = tf.reduce_sum(cross_entropies)
     with tf.variable_scope("adam_vars"):
        optimizer = tf.train.AdamOptimizer(learning_rate=0.0001)
        gradients = optimizer.compute_gradients(loss=cross_entropy_sum)
        for grad_var_pair in gradients:
            current_variable = grad_var_pair[1]
            current_gradient = grad_var_pair[0]
            gradient_name_to_save = current_variable.name.replace(":", "_")
            tf.summary.histogram(gradient_name_to_save, current_gradient) 

Вызов tf.trainable_variables показывает, что есть переменные. Я думаю, что проблема может быть с cross_entropy_sum? Использование get_shape(cross_entropy_sum) возвращает (), но если я использую опцию keepdims, форма будет (1,), но я получаю ту же ошибку.

Вот трассировка ошибки:

ПРЕДУПРЕЖДЕНИЕ: tensorflow: От C: \ Программы \ питон \ python36 \ Lib \ сайт-пакеты \ tensorflow \ вно \ узнать \ питон \ узнать \ наборов данных \ base.py: 198: повторная попытка (из тензорного потока.contrib.learn.python.learn.datasets.base) устарела и будет удалена в следующей версии. Инструкции для Обновление: используйте модуль повтора или аналогичные альтернативы. Проследить (последний вызов последний): файл "C: \ Программы \ питон \ python36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ рамки \ op_def_library.py", строка 510 в _apply_op_helper предпочитаемый тип_данных = default_dtype) Файл "C: \ Programs \ python \ python36 \ lib \ site-packages \ tenorsflow \ python \ framework \ ops.py", строка 1040, в internal_convert_to_tensor ret = translation_func (значение, dtype = dtype, name = имя, as_ref = as_ref) Файл "C: \ Программы \ питон \ python36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ рамки \ constant_op.py", строка 235, в _constant_tensor_conversion_function возвращаемая константа (v, dtype = dtype, name = name) Файл "C: \ Programs \ python \ python36 \ lib \ site-packages \ensorflow \ python \ framework \ constant_op.py", строка 214, постоянная значение, dtype = dtype, shape = shape, verify_shape = verify_shape)) Файл "C: \ Программы \ питон \ python36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ рамки \ tensor_util.py", строка 421, в make_tensor_proto повысить ValueError («Нет значений не поддерживается.») ValueError: Нет значений не поддерживается.

Во время обработки вышеуказанного исключения произошло другое исключение:

Traceback (последний вызов был последним): File "C: \ Программы \ питон \ python36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ рамки \ op_def_library.py", строка 524, в _apply_op_helper значения, as_ref = input_arg.is_ref) .dtype.name Файл "C: \ Programs \ python \ python36 \ lib \ site-packages \ensorflow \ python \ framework \ ops.py", строка 1040, в internal_convert_to_tensor ret = translation_func (значение, dtype = dtype, name = имя, as_ref = as_ref) Файл "C: \ Программы \ питон \ python36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ рамки \ constant_op.py", строка 235, в _constant_tensor_conversion_function возвращаемая константа (v, dtype = dtype, name = name) Файл "C: \ Programs \ python \ python36 \ lib \ site-packages \ensorflow \ python \ framework \ constant_op.py", строка 214, постоянная значение, dtype = dtype, shape = shape, verify_shape = verify_shape)) Файл "C: \ Программы \ питон \ python36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ рамки \ tensor_util.py", строка 421, в make_tensor_proto повысить ValueError («Нет значений, не поддерживаемых».) ValueError: Нет значений, не поддерживаемых.

Во время обработки вышеуказанного исключения произошло другое исключение:

Traceback (последний вызов был последним): файл "P: \ macro и программирование" файлы \ TFpy \ TFcarcassimageseg3.py ", строка 252, в Файл tf.summary.histogram (имя_градиента_градиента, текущий_градиент) "C: \ Программы \ питон \ python36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ резюме \ summary.py", строка 196, в гистограмме tag = tag, values ​​= values, name = scope) Файл "C: \ Programs \ python \ python36 \ lib \ site-packages \ tenorsflow \ python \ ops \ gen_logging_ops.py", строка 308, в _histogram_summary"HistogramSummary", tag = tag, values ​​= values, name = name) Файл "C: \ Programs \ python \ python36 \ lib \ site-packages \ensorflow \ python \ framework \ op_def_library.py", строка 528, в _apply_op_helper (input_name, err)) ValueError: Пытался преобразовать «значения» в тензор и потерпел неудачу. Ошибка: ни одно из значений не поддерживается.

Я здесь не в себе, но я был бы признателен за любые указания по устранению этой ошибки, спасибо!

1 Ответ

0 голосов
/ 15 октября 2018

None values not supported. Это происходит, если вы используете инструкцию TensorFlow для переменной, не содержащей ее. Я использовал if g is not None:, как apply_gradients(...) использует его!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...