Я пытаюсь создать очень простой двоичный классификатор в Tensorflow для сгенерированных данных.Градиенты логических операторов в тензорном потоке
Я генерирую случайные данные из двух отдельных нормальных распределений. Затем я буду классифицировать полученные данные двоичному классу, если он меньше или больше числа, A.
В идеале A будет срезом в середине обоих нормалей. Например. если мои данные сгенерированы N (1,1) + N (-1,1), то A должно быть приблизительно 0.
Я запускаю ошибку «Без градиентов, предусмотренных для любой переменной ...» , В частности:
No gradients provided for any variable: ((None, <tensorflow.python.ops.variables.Variable object at 0x7fd9e3fae710>),)
Я думаю, что это, возможно, придется делать с тем, что Tensorflow не может рассчитать градиенты для логических операторов. Моя классификация для любого заданного значения должна быть что-то вроде:
Учитывая точку данных х и значение:
[1,0]: если х <
[0,1 ]: если х> = A
Учитывая эту идею, вот мой расчет в Tensorflow для вывода:
my_output = tf.concat(0,[tf.to_float(tf.less(x_data, A)), tf.to_float(tf.greater_equal(x_data, A))])
ли это неправильный способ реализовать этот вывод? Существует ли нелогический функциональный эквивалент?
Спасибо. Если вы хотите, чтобы увидеть весь свой код, вот суть: https://gist.github.com/nfmcclure/46c323f0a55ae1628808f7a58b5d437f
Edit: Полный Трассировка стека:
Traceback (most recent call last):
File "<ipython-input-182-f8837927493d>", line 1, in <module>
runfile('/.../back_propagation.py', wdir='/')
File "/usr/local/lib/python3.4/dist-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 699, in runfile
execfile(filename, namespace)
File "/usr/local/lib/python3.4/dist-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 88, in execfile
exec(compile(open(filename, 'rb').read(), filename, 'exec'), namespace)
File "/.../back_propagation.py", line 94, in <module>
train_step = my_opt.minimize(xentropy)
File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/training/optimizer.py", line 192, in minimize
name=name)
File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/training/optimizer.py", line 286, in apply_gradients
(grads_and_vars,))
ValueError: No gradients provided for any variable: ((None, <tensorflow.python.ops.variables.Variable object at 0x7fd9e3fae710>),)
Полная трассировка стека может помочь – KevinOrr