Softmax回歸練習

2021-08-28 06:53:51 字數 1949 閱讀 2557

整個流程包括以下四部分:

1、定義演算法公式,也就是神經網路的forward時的計算 y=softmax(w.tx +b)

2、定義損失函式(h(y)=-∑y_log(y)),並制定優化器(梯度下降)

3、迭代的對資料進行訓練

4、在測試集或驗證集上對準確率進行評測

import tensorflow as tf

#匯入mnist模組

from tensorflow.examples.tutorials.mnist import input_data

#讀取mnist資料

mnist = input_data.read_data_sets("g:/tensorflow/mnist_data/",one_hot=true)

# x 是乙個佔位符,代表待識別的/tensor

x = tf.placeholder(tf.float32,[none,784])

# w 是softmax模型的引數,將784維的輸入轉換為10維,模型的引數用tf.variable表示

w = tf.variable(tf.zeros([784,10]))

b = tf.variable(tf.zeros([10]))

#y表示輸出

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

#y_表示實際標籤

y_ = tf.placeholder(tf.float32,[none,10])

#根據y和y_構造交叉熵損失

cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y)))

#利用梯度下降方法針對模型w和b進行優化,0.01代表學習速率

train_step = tf.train.gradientdescentoptimizer(0.01).minimize(cross_entropy)

#建立session,只有在session中才能執行優化步驟train_step

sess = tf.interactivesession()

#初始化所有變數,分配記憶體

tf.global_variables_initializer().run()

#進行1000步梯度下降

for i in range(1000):

batch_xs, batch_ys = mnist.train.next_batch(100)

#在session中執行train_step,執行時要傳入佔位符的值

sess.run(train_step, feed_dict=)

#正確的**結果,比較**值和實際值

correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))

#算**準確率tf.cast將correct_prediction轉換為float32(false為0,true為1),tf.reduce_mean計算陣列中的所有元素的平均值,即分類準確率

accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

print( "setp: ", i, "accuracy: ",sess.run(accuracy, feed_dict=))

執行結果:

...

setp: 993 accuracy: 0.9188

setp: 994 accuracy: 0.9122

setp: 995 accuracy: 0.9089

setp: 996 accuracy: 0.9196

setp: 997 accuracy: 0.9142

setp: 998 accuracy: 0.914

setp: 999 accuracy: 0.9083

SoftMax回歸詳解

損失函式 梯度下降法求引數 omega b bb 實現與 logistic 回歸的關係 重點 關係 求導的關係 重點 from sklearn import datasets import numpy as np iris datasets.load iris 載入鳶尾花資料集 x iris dat...

線性回歸與softmax回歸的區別

線性回歸是一種回歸演算法,根據當前資料去學習直線的兩個引數。可以用輸入特徵維度為2輸出為1的單層神經網路來實現。線性回歸模型適 於輸出為連續值的情景 softmax回歸,是一種分類方法,模型輸出可以是 個 像影象類別這樣的離散值。對於這樣的離散值 問題,我們可以使 諸如softmax 回歸在內的 分...

邏輯回歸 交叉熵 softmax

softmax是一種歸一化函式,用於將向量中元素的值都歸一化0 1之間,並保持其加和為1。公示表達為 根據公式和可看出,前一層的啟用值越大,經過softmax函式後的值也就越大,又因為softmax的所有輸出加和為1,因此,常利用softmax層將啟用值與概率實現對映。多元分類 multi clas...