theano學習之分類學習

2021-09-02 03:57:19 字數 2220 閱讀 6680

**:
from __future__ import print_function

import numpy as np

import theano

import theano.tensor as t

#該函式功能用來計算準確率

def compute_accuracy(y_target, y_predict):

correct_prediction = np.equal(y_predict, y_target)

accuracy = np.sum(correct_prediction)/len(correct_prediction)

return accuracy

# generate a dataset: d = (input_values, target_class)

#用 randn 隨機生成資料集。 d 中的 input_values 是 400 個樣本,784 個feature。

# target_class 是有兩類,0 和 1。 要做的是,用神經網路訓練資料學習哪些輸入對應 0,哪些對應1

# 生成隨機數: d = (input_values, target_class)

rng = np.random

n = 400 # training sample size

feats = 784 # number of input variables

d = (rng.randn(n, feats), rng.randint(size=n, low=0, high=2))#d[0]表特徵,d[1]表標籤

print(d[0])

print(d[1])

#定義x,y容器,相當於tensorflow中的placeholder,用來存資料

x = t.dmatrix("x")

y = t.dvector("y")

#初始化權重和偏置

w = theano.shared(rng.randn(feats), name="w")

b = theano.shared(0., name="b")

#定義啟用函式和交叉熵

p_1 = t.nnet.sigmoid(t.dot(x, w) + b) #啟用函式

prediction = p_1 > 0.5 # the prediction thresholded閾值,呼叫了p_1函式,**當前權重下的值,這個是個布林值,ture或false

xent = -y * t.log(p_1) - (1-y) * t.log(1-p_1) # 交叉熵

# or

# xent = t.nnet.binary_crossentropy(p_1, y) # this is provided by theano

cost = xent.mean() + 0.01 * (w ** 2).sum()#正則化後的代價函式(l2正則化)

gw, gb = t.grad(cost, [w, b]) # 梯度

#啟用網路

learning_rate = 0.1

train = theano.function(

inputs=[x, y],

outputs=[prediction, xent.mean()],

updates=((w, w - learning_rate * gw), (b, b - learning_rate * gb)))

predict = theano.function(inputs=[x], outputs=prediction)

#訓練模型

for i in range(500):

pred, err = train(d[0], d[1])#d[0]指特徵所有資料,d[1]指標籤所有資料

if i % 50 == 0:

print('cost:', err)

print("accuracy:", compute_accuracy(d[1], predict(d[0])))

print("target values for d:")

print(d[1])

print("prediction on d:")

print(predict(d[0]))

**

機器學習之分類學習(模型訓練)

完成資料的預處理,接下進入分類學習中的重點 模型訓練。在前面我們得到了一批資料,現在我們需要從中提取出一部分資料作為我們訓練的資料,當然我們也可以把全部的資料作為我們訓練的資料,但是如果我們把全部的資料都拿來作為訓練就沒有資料來測試我們模型的效能了,因為訓練資料和測試資料不能重疊,不然就是作弊了,這...

機器學習之分類學習(效能分析)

在上面我們得到了乙個邏輯回歸模型,但我們需要這個模型的效能如何,也是知道這個模型學習的成果如何,要進行期末考試。考試,顧名思義是給模型發答卷,答卷就是前面我們提取出來的測試資料,我們把測試據中的結果抽空作為標準答案,讓模型答題,最後對照標準答案給分。使用訓練好的模型lr對x test進行 結果儲存在...

分類學習 整合學習

鐵達尼號沉船事故 鐵達尼號乘客資料查驗 import pandas as pd 匯入pandas用於資料分析 titanic pd.read csv titanic.head 觀察前幾行資料 titanic.info 檢視資料的統計特徵 特徵選取,機器學習很重要的乙個環節 x titanic pcl...