У меня есть вопрос, касающийся начальных слоев или GoogleNet в целом. Упоминается, что существуют функции softmax для разных ветвей, чтобы упорядочить начальные слои. Я использовал реализацию для начальных слоев, как это:
def inception2d(x, in_channels, filter_count):
# bias dimension = 3*filter_count and then the extra in_channels for the avg pooling
bias = tf.Variable(tf.truncated_normal([3*filter_count + in_channels], mu, sigma)),
# 1x1
one_filter = tf.Variable(tf.truncated_normal([1, 1, in_channels, filter_count], mu, sigma))
one_by_one = tf.nn.conv2d(x, one_filter, strides=[1, 1, 1, 1], padding='SAME')
# 3x3
three_filter = tf.Variable(tf.truncated_normal([3, 3, in_channels, filter_count], mu, sigma))
three_by_three = tf.nn.conv2d(x, three_filter, strides=[1, 1, 1, 1], padding='SAME')
# 5x5
five_filter = tf.Variable(tf.truncated_normal([5, 5, in_channels, filter_count], mu, sigma))
five_by_five = tf.nn.conv2d(x, five_filter, strides=[1, 1, 1, 1], padding='SAME')
# avg pooling
pooling = tf.nn.avg_pool(x, ksize=[1, 3, 3, 1], strides=[1, 1, 1, 1], padding='SAME')
x = tf.concat([one_by_one, three_by_three, five_by_five, pooling], axis=3) # Concat in the 4th dim to stack
x = tf.nn.bias_add(x, bias)
return tf.nn.relu(x)
Теперь упомянуто, что должен быть отдельный слой softmax, делающий прогноз.
![enter image description here](https://i.stack.imgur.com/7IO1u.png)
Мой вопрос сейчас. Как включить «разветвленный» softmax в тензор потока? Есть ли общие потери или я объединяю потери по сумме весов в конце? Я был бы весьма благодарен за пример. Заранее спасибо. Лучший Макс