Tôi đã chơi với một Mạng thần kinh đơn giản chỉ có một lớp ẩn, bởi Tensorflow, và sau đó tôi đã thử các kích hoạt khác nhau cho lớp ẩn:
- Relu
- Sigmoid
- Softmax (tốt, thường là softmax được sử dụng ở lớp cuối cùng ..)
Relu cung cấp độ chính xác và độ chính xác xác thực tàu tốt nhất. Tôi không chắc làm thế nào để giải thích điều này.
Chúng tôi biết rằng Relu có những phẩm chất tốt, chẳng hạn như độ thưa thớt, chẳng hạn như không biến mất độ dốc, v.v.
Hỏi: nói chung tế bào thần kinh Relu tốt hơn tế bào thần kinh sigmoid / softmax? Chúng ta có nên sử dụng tế bào thần kinh Relu trong NN (hoặc thậm chí CNN) không? Tôi nghĩ rằng một tế bào thần kinh phức tạp hơn sẽ giới thiệu kết quả tốt hơn, ít nhất là đào tạo độ chính xác nếu chúng ta lo lắng về việc cung cấp quá nhiều.
Cảm ơn PS: Mã về cơ bản là từ "Udacity-Machine learning -assocation2", đây là sự công nhận của notMNIST bằng cách sử dụng một lớp ẩn 1 lớp đơn giản.
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)