Tensorflow tarafından yalnızca bir gizli katmana sahip basit bir Sinir Ağı ile oynuyordum ve sonra gizli katman için farklı aktivasyonlar denedim:
- relu
- sigmoid
- Softmax (peki, genellikle softmax son katmanda kullanılır ..)
Relu en iyi tren doğruluğunu ve doğrulama doğruluğunu verir. Bunu nasıl açıklayacağımdan emin değilim.
Relu’nun gradyan-yok oluşu gibi seyreklik gibi iyi niteliklere sahip olduğunu biliyoruz.
S: Relu nöronu genel olarak sigmoid / softmax nöronlarından daha mı iyidir? Neredeyse her zaman NN'de Relu nöronları kullanmalı mıyız (hatta CNN)? Daha karmaşık bir nöronun daha iyi sonuç vereceğini düşündüm, en azından fazla uydurma konusunda endişelenirsek en azından tren doğruluğunu.
Teşekkürler PS: Kod temelde "Udacity-Machine learning-atama2" dan geliyor, ki bu basit bir 1-gizli-katmanlı-NN kullanarak not almamış.
batch_size = 128
graph = tf.Graph()
with graph.as_default():
# Input data.
tf_train_dataset = tf.placeholder(tf.float32, shape=(batch_size, image_size * image_size))
tf_train_labels = tf.placeholder(tf.float32, shape=(batch_size, num_labels))
tf_valid_dataset = tf.constant(valid_dataset)
tf_test_dataset = tf.constant(test_dataset)
# hidden layer
hidden_nodes = 1024
hidden_weights = tf.Variable( tf.truncated_normal([image_size * image_size, hidden_nodes]) )
hidden_biases = tf.Variable( tf.zeros([hidden_nodes]))
hidden_layer = **tf.nn.relu**( tf.matmul( tf_train_dataset, hidden_weights) + hidden_biases)
# Variables.
weights = tf.Variable( tf.truncated_normal([hidden_nodes, num_labels]))
biases = tf.Variable(tf.zeros([num_labels]))
# Training computation.
logits = tf.matmul(hidden_layer, weights) + biases
loss = tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits(logits, tf_train_labels) )
# Optimizer.
optimizer = tf.train.GradientDescentOptimizer(0.5).minimize(loss)
# Predictions for the training, validation, and test data.
train_prediction = tf.nn.softmax(logits)
valid_relu = **tf.nn.relu**( tf.matmul(tf_valid_dataset, hidden_weights) + hidden_biases)
valid_prediction = tf.nn.softmax( tf.matmul(valid_relu, weights) + biases)
test_relu = **tf.nn.relu**( tf.matmul( tf_test_dataset, hidden_weights) + hidden_biases)
test_prediction = tf.nn.softmax(tf.matmul(test_relu, weights) + biases)