softmax1 = tf.add(tf.matmul(x, weights), biases, name=scope.name)
не равен
softmax2 = tf.nn.softmax(tf.matmul(x, weights) + biases, name=scope.name)
softmax1
, поскольку не имеет SoftMax расчета в то время как все softmax2
делают. См. Tensorflow API для tf.nn.softmax. general idea of a softmax является то, что он нормализует ввод, масштабирования всей последовательности данных, обеспечивая их запись в интервале (0, 1), а сумма равна 1.
Единственное, что равно между двумя утверждениями является базовый расчет. +
делает то же самое tf.add делает так tf.add(tf.matmul(x, weights), biases)
соответствует до tf.matmul(x, weights) + biases
.
EDIT: Для того, чтобы добавить некоторые уточнения (я думаю, вы не знаете, на самом деле знает, что делает SoftMax?):
tf.matmul(x, W) + bias
Рассчитывает матричное умножение между x
(ваш входной вектор) и W
Весы для текущего слоя. Затем добавляется bias
.
Этот расчет моделирует активацию одного уровня. Кроме того, у вас есть функция активации, например функция sigmoid
, которая преобразует вашу активацию. Таким образом, для одного слоя, который вы обычно делаете что-то вроде этого:
h1 = tf.sigmoid(tf.matmul(x, W) + bias)
Здесь h1
будет активация этого слоя.
Операция softmax
просто перепродает ваши данные. Например, если вы получили эту активацию на выходной слое:
output = [[1.0, 2.0, 3.0, 5.0, 0.5, 0.2]]
The SoftMax перемасштабирует этот вход для установки значения в интервале (0, 1) и является суммой, равной 1:
tf.nn.softmax(output)
> [[ 0.01497873, 0.0407164 , 0.11067866, 0.81781083, 0.00908506,
0.00673038]]
tf.reduce_sum(tf.nn.softmax(output))
> 1.0
Итак, правильно ли сказать, что 2) является применением кросс-энтропии для получения меток '0.0' или' 1.0' для вероятности, а 1) нужен еще один проход для получения 1-горячей метки? – Kyrol
Нет, это неверно. 'softmax' не создает вектор с 1 горячим кодированием. Операция softmax перескакивает ваш входной вектор. Для получения кросс-энтропии в качестве ошибки вам потребуется рассчитать кросс-энтропию отдельно. – daniel451
Хорошо, я это понимаю. – Kyrol