2016-07-28 21 views
12

Gần đây tôi đã thực hiện khóa học Sâu về Udacity dựa trên khoảng TensorFlow. Tôi có một chương trình đơn giản MNIST đó là chính xác khoảng 92%:Tensorflow Relu Misunderstanding

 

from tensorflow.examples.tutorials.mnist import input_data 
import tensorflow as tf 

mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) 

x = tf.placeholder(tf.float32, [None, 784]) 
W = tf.Variable(tf.zeros([784, 10])) 
b = tf.Variable(tf.zeros([10])) 

y = tf.nn.softmax(tf.matmul(x, W) + b) 

y_ = tf.placeholder(tf.float32, [None, 10]) 
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1])) 

train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) 

init = tf.initialize_all_variables() 

sess = tf.Session() 
sess.run(init) 

for i in range(1000): 
    batch_xs, batch_ys = mnist.train.next_batch(100) 
    sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) 

correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1)) 
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) 
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels})) 
 

phân công tiếp theo của tôi nó để Turn the logistic regression example with SGD into a 1-hidden layer neural network with rectified linear units nn.relu() and 1024 hidden nodes

Tôi gặp một khối tinh thần về việc này. Hiện tại tôi có ma trận trọng số 784 x 10 và vectơ thiên vị dài 10 phần tử. Tôi không hiểu cách tôi kết nối vector phần tử 10 kết quả từ WX + Bias đến 1024 Relu s.

Nếu ai đó có thể giải thích điều này với tôi, tôi sẽ rất biết ơn.

Trả lời

18

Ngay bây giờ bạn có một cái gì đó như thế này

và bạn cần một cái gì đó giống như

này (sơ đồ này là mất tích lớp ReLU mà đi sau + b1)

+0

Cảm ơn bạn rất nhiều vì câu trả lời rõ ràng của bạn, tôi nghĩ bây giờ có một nắm bắt về những gì tôi cần làm. X là một phần tử vector 784 và quá trình WX + B phải dẫn đến một vectơ yếu tố 1024. Tôi không chắc chắn về mặt toán học khi có thêm 240 phần tử đến từ đâu, không phải là chúng thừa? Tôi cảm thấy như tôi sẽ hiểu điều này một cách trực quan hơn nếu số lượng các nút ẩn là <= 784 – James

+1

Thực ra, nó thường được sử dụng để ánh xạ các đầu vào chiều thấp đến các không gian chiều cao hơn theo cách này. Giả sử bạn phải xây dựng một mạng mô hình sàn (x)% 2 == 0. Đầu vào của bạn là một chiều, nhưng trước tiên bạn phải ánh xạ nó vào không gian chiều cao hơn. TensorFlow sân chơi mặc định cho 2 tế bào thần kinh đầu vào và 4 tế bào thần kinh ẩn - http://playground.tensorflow.org/ –

+0

Cảm ơn, tôi đoán điều này thực sự làm cho rất nhiều ý nghĩa bây giờ mà tôi đã có thêm một chút trong khóa học. Bạn muốn các nút dư thừa đó sao cho kết nối dự phòng có thể được tạo thành bằng cách bỏ qua, vv .. – James