Theano深度學習系列1

2021-07-04 07:13:47 字數 2495 閱讀 2543

最近將英文原版書籍《python for data analysis》看完,也將《scikit-learn cookbook》例子實現完,對基本的機器學習有一定的了解,下面來學習強大的python深度學習庫theano以及keras。

import numpy

import theano

import theano.tensor as t

rng = numpy.random

n = 400

feats = 784s

d = (rng.randn(n, feats), rng.randint(size=n, low=0, high=2))

training_steps = 10000

x = t.matrix('x')

y = t.vector('y')

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

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

p_1 = 1 / (1 + t.exp(-t.dot(x, w) - b))

xent = -y * t.log(p_1) - (1-y) * t.log(1-p_1)

cost = xent.mean() + 0.01 * (w ** 2).sum()

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

train = theano.function(inputs=[x,y], outputs=[prediction, xent],

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

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

for i in range(training_steps):

pred, err = train(d[0], d[1])

print

"final model:"

print w.get_value(), b.get_value()

print

"target values for d:", d[1]

print

"prediction on d:", predict(d[0])

**解釋:

首先我們生成乙個用來邏輯回歸的模型。x,y,w,b的定義是theano中標準的定義方式,其中w,b是共享變數,為什麼需要這種變數呢,原因是後期需要gpu程式設計,需要將cpu中的變數移動到gpu中去,前期不需要了解。

p_1 = 1 / (1 + t.exp(-t.dot(x, w) - b))
這句話的含義對應的數學表示式為 h=

11+e

−(w∗

x+b)

這裡多了乙個b什麼意思,其實b可以看做是w0,原理與ufldl上的邏輯回歸表示式是一樣的。

xent = -y * t.log(p_1) - (1-y) * t.log(1-p_1)
對應的表示式為,這是代價函式的一部分 −y

∗log

(h(x

))−(

1−y)

∗log

(1−h

(x))

完整的代價函式為 j=

−1m[

∑i=1

my∗l

og(h

(x))

(1−y

)∗lo

g(1−

h(x)

)]則下面**是完整代價函式的一部分:

cost = xent.mean() + 0.01 * (w ** 2).sum()
後面的為正則化項,防止過度擬合。

下面**就是使用隨機梯度下降演算法來更新w,b的值。

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

train = theano.function(inputs=[x,y], outputs=[prediction, xent],

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

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

for i in range(training_steps):

pred, err = train(d[0], d[1])

print

"final model:"

print w.get_value(), b.get_value()

print

"target values for d:", d[1]

print

"prediction on d:", predict(d[0])

這個例子雖然簡單,但知識量特別大,希望有讀者看的時候有疑問參考這篇文章,這篇作者寫的特別好,也很親民。

Theano學習系列(1) 符號變數

這段時間通過學習theano的library documentation,總結出使用theano去實現乙個具體的演算法一般需要以下幾個步驟 1 定義符號變數 2 建立起來符號表示式 3 建立起來圖連線關係也就是function函式實現的 4 呼叫function實現一定的功能,也就是完成編譯呼叫。在...

深度學習(2)安裝theano

環境 ubuntu 16.04 硬體 伺服器,顯示卡 4塊1080ti 我通過anaconda的方式來安裝,基於anaconda環境隔離,自動安裝依賴包等等的特點,用anaconda裝theano非常方便,不熟悉anaconda的可以參考我的部落格 ubuntu下安裝anaconda anacond...

深度學習實驗系列(1)

開篇貼上導師的幾句話 最近準備趁著幾位開題,把神經網路,深度學習方面的內容系統的挖挖。要學習深度學習,多少要了解一下神經網路,神經網路的典型就是bp,而bp本身是很簡單的。我們前面就從這幾個資料 關於資料,我會在接下來的內容中一一展開 開始吧。一 perception感知器演算法 先說一下感知器演算...