Это происходит в правильном направлении, но идея в том, что вместо MyCNN
для каждого примера получим одно значение угла, получим два значения.Таким образом, если возвращаемое значение MyCNN
в данный момент имеет форму, подобную (None,)
или (None, 1)
, вы должны изменить его на (None, 2)
- то есть последний слой должен иметь еще один вывод.Если у вас есть сомнения по поводу того, как это сделать, пожалуйста, предоставьте более подробную информацию о теле MyCNN
.
Тогда у вас будет просто:
outs = tf.tanh(logits_CNN[:, 0])
outc = tf.tanh(logits_CNN[:, 1])
out_radians = tf.atan2(outs, outc) # This is the final angle output in radians
По поводу потери я не уверенЯ понимаю ваш вклад YЕсли вы пытаетесь предсказать угол, разве это не должно быть значением с плавающей точкой, а не целым числом?В этом случае у вас будет:
# Example angle in radians
y_CNN = tf.placeholder(tf.float32, (None,))
# ...
loss_operation_CNN = tf.reduce_mean(0.5 * (tf.square(tf.sin(y_CNN) - outs) +
tf.square(tf.cos(y_CNN) - outc)))