Я написал свой собственный многослойный персептрон в TensorFlow, в котором я инициализирую весовые коэффициенты и смещения следующим образом:
# Store layers weight & bias
weights = {
'h1': tf.Variable(tf.random_normal([n_input, hidden_layer_sizes[0]], 0, 0.1, seed=random_state)), # 1 hidden layer is mandatory
}
biases = {
'b1': tf.Variable(tf.random_normal([hidden_layer_sizes[0]], 0, 0.1, seed=random_state)),
}
for i in range(len(hidden_layer_sizes)-1):
weights['h'+str(i+2)] = tf.Variable(tf.random_normal([hidden_layer_sizes[i], hidden_layer_sizes[i+1]], 0, 0.1, seed=random_state))
biases['b'+str(i+2)] = tf.Variable(tf.random_normal([hidden_layer_sizes[i+1]], 0, 0.1, seed=random_state))
weights['out'] = tf.Variable(tf.random_normal([hidden_layer_sizes[-1], n_classes], 0, 0.1, seed=random_state))
biases['out'] = tf.Variable(tf.random_normal([n_classes], 0, 0.1, seed=random_state))
Количество скрытых слоев варьируется от 1 до 4, в зависимости от ввода. Я читал в Интернете об альтернативных способах инициализации весов, и мне интересно, применимы ли они в модели MLP или только в более сложных моделях, таких как CNN. Например, Ксавье, HE, дисперсия, масштабированная инициализация и т. Д.
Подходит ли какой-либо из альтернативных инициализаторов в моем случае и какой из них считается наилучшим для этого типа сети?