tensorflow實(shí)現(xiàn)邏輯回歸模型
邏輯回歸模型
邏輯回歸是應(yīng)用非常廣泛的一個(gè)分類(lèi)機(jī)器學(xué)習(xí)算法,它將數(shù)據(jù)擬合到一個(gè)logit函數(shù)(或者叫做logistic函數(shù))中,從而能夠完成對(duì)事件發(fā)生的概率進(jìn)行預(yù)測(cè)。
import numpy as np import tensorflow as tf import matplotlib.pyplot as plt from tensorflow.examples.tutorials.mnist import input_data #下載好的mnist數(shù)據(jù)集存在F:/mnist/data/中 mnist = input_data.read_data_sets('F:/mnist/data/',one_hot = True) print(mnist.train.num_examples) print(mnist.test.num_examples) trainimg = mnist.train.images trainlabel = mnist.train.labels testimg = mnist.test.images testlabel = mnist.test.labels print(type(trainimg)) print(trainimg.shape,) print(trainlabel.shape,) print(testimg.shape,) print(testlabel.shape,) nsample = 5 randidx = np.random.randint(trainimg.shape[0],size = nsample) for i in randidx: curr_img = np.reshape(trainimg[i,:],(28,28)) curr_label = np.argmax(trainlabel[i,:]) plt.matshow(curr_img,cmap=plt.get_cmap('gray')) plt.title(""+str(i)+"th Training Data"+"label is"+str(curr_label)) print(""+str(i)+"th Training Data"+"label is"+str(curr_label)) plt.show() x = tf.placeholder("float",[None,784]) y = tf.placeholder("float",[None,10]) W = tf.Variable(tf.zeros([784,10])) b = tf.Variable(tf.zeros([10])) # actv = tf.nn.softmax(tf.matmul(x,W)+b) #計(jì)算損失 cost = tf.reduce_mean(-tf.reduce_sum(y*tf.log(actv),reduction_indices=1)) #學(xué)習(xí)率 learning_rate = 0.01 #隨機(jī)梯度下降 optm = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) #求1位置索引值 對(duì)比預(yù)測(cè)值索引與label索引是否一樣,一樣返回True pred = tf.equal(tf.argmax(actv,1),tf.argmax(y,1)) #tf.cast把True和false轉(zhuǎn)換為float類(lèi)型 0,1 #把所有預(yù)測(cè)結(jié)果加在一起求精度 accr = tf.reduce_mean(tf.cast(pred,"float")) init = tf.global_variables_initializer() """ #測(cè)試代碼 sess = tf.InteractiveSession() arr = np.array([[31,23,4,24,27,34],[18,3,25,4,5,6],[4,3,2,1,5,67]]) #返回?cái)?shù)組的維數(shù) 2 print(tf.rank(arr).eval()) #返回?cái)?shù)組的行列數(shù) [3 6] print(tf.shape(arr).eval()) #返回?cái)?shù)組中每一列中最大元素的索引[0 0 1 0 0 2] print(tf.argmax(arr,0).eval()) #返回?cái)?shù)組中每一行中最大元素的索引[5 2 5] print(tf.argmax(arr,1).eval()) J""" #把所有樣本迭代50次 training_epochs = 50 #每次迭代選擇多少樣本 batch_size = 100 display_step = 5 sess = tf.Session() sess.run(init) #循環(huán)迭代 for epoch in range(training_epochs): avg_cost = 0 num_batch = int(mnist.train.num_examples/batch_size) for i in range(num_batch): batch_xs,batch_ys = mnist.train.next_batch(batch_size) sess.run(optm,feed_dict = {x:batch_xs,y:batch_ys}) feeds = {x:batch_xs,y:batch_ys} avg_cost += sess.run(cost,feed_dict = feeds)/num_batch if epoch % display_step ==0: feeds_train = {x:batch_xs,y:batch_ys} feeds_test = {x:mnist.test.images,y:mnist.test.labels} train_acc = sess.run(accr,feed_dict = feeds_train) test_acc = sess.run(accr,feed_dict = feeds_test) #每五個(gè)epoch打印一次信息 print("Epoch:%03d/%03d cost:%.9f train_acc:%.3f test_acc: %.3f" %(epoch,training_epochs,avg_cost,train_acc,test_acc)) print("Done")
程序訓(xùn)練結(jié)果如下:
Epoch:000/050 cost:1.177228655 train_acc:0.800 test_acc: 0.855 Epoch:005/050 cost:0.440933891 train_acc:0.890 test_acc: 0.894 Epoch:010/050 cost:0.383387268 train_acc:0.930 test_acc: 0.905 Epoch:015/050 cost:0.357281335 train_acc:0.930 test_acc: 0.909 Epoch:020/050 cost:0.341473956 train_acc:0.890 test_acc: 0.913 Epoch:025/050 cost:0.330586549 train_acc:0.920 test_acc: 0.915 Epoch:030/050 cost:0.322370980 train_acc:0.870 test_acc: 0.916 Epoch:035/050 cost:0.315942993 train_acc:0.940 test_acc: 0.916 Epoch:040/050 cost:0.310728854 train_acc:0.890 test_acc: 0.917 Epoch:045/050 cost:0.306357428 train_acc:0.870 test_acc: 0.918 Done
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python利用邏輯回歸模型解決MNIST手寫(xiě)數(shù)字識(shí)別問(wèn)題詳解
- 使用Keras實(shí)現(xiàn)簡(jiǎn)單線(xiàn)性回歸模型操作
- 使用TensorFlow實(shí)現(xiàn)簡(jiǎn)單線(xiàn)性回歸模型
- PyTorch搭建一維線(xiàn)性回歸模型(二)
- PyTorch搭建多項(xiàng)式回歸模型(三)
- TensorFlow實(shí)現(xiàn)Softmax回歸模型
- 用tensorflow構(gòu)建線(xiàn)性回歸模型的示例代碼
- Python 實(shí)現(xiàn)3種回歸模型(Linear Regression,Lasso,Ridge)的示例
相關(guān)文章
Windows下pycharm創(chuàng)建Django 項(xiàng)目(虛擬環(huán)境)過(guò)程解析
這篇文章主要介紹了Windows下pycharm創(chuàng)建Django 項(xiàng)目(虛擬環(huán)境)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09利用Python實(shí)現(xiàn)從PDF到CSV的轉(zhuǎn)換
將PDF轉(zhuǎn)換為CSV極大地提升了數(shù)據(jù)的實(shí)用價(jià)值,Python作為一種強(qiáng)大的編程語(yǔ)言,能夠高效完成這一轉(zhuǎn)換任務(wù),本文將介紹如何利用Python實(shí)現(xiàn)從PDF到CSV的轉(zhuǎn)換,需要的朋友可以參考下2024-07-07用python統(tǒng)計(jì)代碼行的示例(包括空行和注釋)
今天小編就為大家分享一篇用python統(tǒng)計(jì)代碼行的示例(包括空行和注釋),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07python實(shí)現(xiàn)楊輝三角的幾種方法代碼實(shí)例
這篇文章主要介紹了python實(shí)現(xiàn)楊輝三角的幾種方法代碼實(shí)例,文中圖文代碼講解的很清晰,有不太懂的同學(xué)可以學(xué)習(xí)下2021-03-03jupyternotebook 撤銷(xiāo)刪除的操作方式
這篇文章主要介紹了jupyternotebook 撤銷(xiāo)刪除的操作方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04Python統(tǒng)計(jì)分析模塊statistics用法示例
這篇文章主要介紹了Python統(tǒng)計(jì)分析模塊statistics用法,結(jié)合實(shí)例形式分析了Python統(tǒng)計(jì)分析模塊statistics計(jì)算平均數(shù)、中位數(shù)、出現(xiàn)次數(shù)、標(biāo)準(zhǔn)差等相關(guān)操作技巧,需要的朋友可以參考下2019-09-09Python實(shí)戰(zhàn)項(xiàng)目用PyQt5制作漫畫(huà)臉GUI界面
PyQt5 是用來(lái)創(chuàng)建Python GUI應(yīng)用程序的工具包。作為一個(gè)跨平臺(tái)的工具包,PyQt可以在所有主流操作系統(tǒng)上運(yùn)行,本文主要介紹了如何用PyQt5制作漫畫(huà)臉的GUI界面2021-10-10