Я построил двухслойную сеть ConvLSTM кодер-декодер, и поверх этого я использую слой свертки (количество фильтров = 1). Я подаю вывод сверточного слоя в softmax, но softmax выдает все, что удивительно, потому что, когда я вручную вычисляю softmax, я получаю числа около 0,5.
Мой слой свертки:
def new_weights(shape, name):
return tf.get_variable(name, shape, initializer=tf.truncated_normal_initializer(mean=0.0, stddev=0.05))
def conv_layer(input, # The previous layer.
num_input_channels, # Num. channels in prev. layer.
filter_size, # Width and height of each filter.
num_filters): # Number of filters.
filter_shape = [filter_size, filter_size, num_input_channels, num_filters]
w = new_weights(shape=filter_shape, name='ConvLayer_Weights')
conv_output = tf.nn.conv2d(input=input,
filter=w,
strides=[1, 1, 1, 1],
padding='SAME')
conv_output = tf.keras.layers.BatchNormalization(axis=3)(conv_output, training=in_training_mode)
return conv_output
pred_1 = conv_layer(input=Conv_inputs,
num_input_channels=num_filters1 + num_filters2,
filter_size=1,
num_filters=1)
softmax_output = tf.nn.softmax(pred_1)
Диапазон, который я получаю для вывода свертки:
min: -0.07310162
mean: -6.542541e-09
max: 0.12119095
Диапазон, который я получаю для вывода softmax:
min: 1.0
mean: 1.0
max: 1.0
А когда я вычисляю softmax для вывода свертки:
calculated softmax for convolution output min: 0.48173272467587763
calculated softmax for convolution output mean: 0.5
calculated softmax for convolution output max: 0.5302607074731537
Итак, мой вопрос, почему Tensorflow softmax производит все?
Кстати, форма вывода свертки (10, 16, 16, 1), а ниже приведен код, который я использую для расчета softmax:
softmax = 1/(1+np.exp(-value))