官方mnist程式碼:
#下載Mnist資料集 import tensorflow.examples.tutorials.mnist.input_data mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) #Tensorflow實現迴歸模型 import tensorflow as tf #定義變數為float型,行因為不確定先給無窮大None;列給28*28=784 x = tf.placeholder("float", [None, 784]) y_ = tf.placeholder("float", [None,10]) #向量相乘y = wx + b,w的行即為x的列,否則無法相乘;輸出大小給10(因為是一個10分類任務) W = tf.Variable(tf.zeros([784, 10])) b = tf.Variable(tf.zeros([10])) #邏輯迴歸模型 #nn模組下的softmax解決多分類問題,引數:是一個預測值,即wx+b會計算出一個分值 #softmax 完成歸一化操作 #得到的y是一個預測結果 y = tf.nn.softmax(tf.matmul(x, W) + b) #計算損失值:-log(p);求均值:reduce_mean cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_*tf.log(y)), reduction_indices=1)) #訓練模型 #最佳化器使用梯度下降 learning_rate = 0.01 #學習率 train_step = tf.train.GradientDescentOptimizer(learning_rate).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}) #評估模型 #比較一下預測值和這個標記的Label值,如果一致返回true,否則返回false correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1)) #計算準確率tf.cast #計算均值tf.reduce_mean accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float")) print sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels})
常用函式:
arr = np.array([ [31,23,4,24,27,34],[18,3,25,0,6,35],[28,14,33,22,20,8] ]) #按列找出每列的最大值的索引 0按列 1按行 tf.argmax(arr, 0).eval() #計算矩陣的維數 tf.rank(arr).eval() #計算矩陣的行和列 tf.shape(arr).eval()