ฉันกำลังเล่นกับ Neural Network ที่มีเลเยอร์ที่ซ่อนเพียงหนึ่งเดียวโดย Tensorflow และจากนั้นฉันลองเปิดใช้งานที่แตกต่างกันสำหรับเลเยอร์ที่ซ่อนอยู่:
- Relu
- sigmoid
- Softmax (ดีมักจะใช้ softmax ในเลเยอร์สุดท้าย .. )
Relu ให้ความแม่นยำและการตรวจสอบความถูกต้องของรถไฟที่ดีที่สุด ฉันไม่แน่ใจว่าจะอธิบายเรื่องนี้อย่างไร
เรารู้ว่า Relu มีคุณสมบัติที่ดีเช่น sparsity เช่น no-gradient-vanishing เป็นต้น แต่
ถาม: เซลล์ประสาท Relu โดยทั่วไปนั้นดีกว่าเซลล์ประสาท sigmoid / softmax หรือไม่? เราควรใช้เซลล์ประสาท Relu ใน NN (หรือแม้แต่ CNN) เกือบทุกครั้งหรือไม่? ฉันคิดว่าเซลล์ประสาทที่ซับซ้อนมากขึ้นจะแนะนำผลลัพธ์ที่ดีกว่าอย่างน้อยก็ฝึกความแม่นยำถ้าเรากังวลเกี่ยวกับการมีน้ำหนักเกิน
ขอบคุณ PS: โค้ดนั้นมาจาก "Udacity-Machine learning -assignment2" ซึ่งเป็นการรับรู้ของ notMNIST โดยใช้ 1-hidden-layer-NN อย่างง่าย
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)