国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

theano學(xué)習(xí)初步(一)

2019-11-14 11:33:27
字體:
供稿:網(wǎng)友

http://blog.csdn.net/u013007900/article/details/52439172

theano學(xué)習(xí)初步(一)

2016-09-05 12:29 510人閱讀 評(píng)論(0) 收藏 舉報(bào) 分類:

目錄(?)[+]

此文源于Theano官方教程,例子源于官方教程以及此處

代碼和例子都收錄在我的github中,求斧正,求粉求星星。

兩個(gè)標(biāo)量相加

代碼如下

import numpyimport theano.tensor as Tfrom theano import function# 第一步,聲明兩個(gè)數(shù)學(xué)意義上的變量x = T.dscalar('x') # 浮點(diǎn)標(biāo)量y = T.dscalar('y')z = x + y# f 返回的是一個(gè)0維度的numpy.ndarrayf = function([x, y], z) # 這兒會(huì)有一個(gè)明顯的延時(shí),因?yàn)閒unction需要編譯成C語言 PRint f(2, 3)print numpy.allclose(f(16.3, 12.1), 28.4)12345678910111234567891011

第一步

x = T.dscalar('x')y = T.dscalar('y')1212

在theano中每一個(gè)符號(hào)(就是代碼層次的變量)都要有一個(gè)類型(Type),這樣就能讓底層的C語言更好地處理代碼。 比如,T.dscalar是一個(gè)“0-多維的浮點(diǎn)數(shù)(d)數(shù)組(標(biāo)量)”,這是一種類型而不是一個(gè)類。所以x和y都不是dscalar的實(shí)例,而是TensorVariable的實(shí)例。但是x和y的類型是dscalar,代碼如下

>>> type(x)<class 'theano.tensor.var.TensorVariable'>>>> x.typeTensorType(float64, scalar)>>> T.dscalarTensorType(float64, scalar)>>> x.type is T.dscalarTrue1234567812345678

可以給每個(gè)變量附上名字,但是這不是必須的,一般用于debug。附上名字的方式就是上文代碼傳入一個(gè)字符。

第二步

第二部分是將x和y相加得到z

z = x + y11

z是一個(gè)變量,用于表示x和y的和。可以用pp函數(shù)來打印出得出z的過程。

>>> from theano import pp>>> print(pp(z))(x + y)123123

第三步

最后一步是創(chuàng)建一個(gè)function,x和y是輸入,z是輸出

f = function([x, y], z)11

第一個(gè)參數(shù)是一個(gè)變量數(shù)組,表示function的輸入。第二個(gè)參數(shù)是一個(gè)變量或者一個(gè)變量數(shù)組,表示我們期盼的輸出。 f可以作為一般的Python函數(shù)使用。

注意: 為了簡便,也可以跳過第三步,只是用eval方法。但是eval()方法不如function()靈活,但是它也可以做到所有我們在教程中做到的東西。

import numpyimport theano.tensor as Tx = T.dscalar('x')y = T.dscalar('y')z = x + yprint numpy.allclose(z.eval({x : 16.3, y : 12.1}), 28.4)123456123456

我們通過像eval()傳遞一個(gè)字典來表示theano變量的值,這個(gè)值可以代替這些變量參與運(yùn)算。 eval()的第一次調(diào)用會(huì)比較慢,因?yàn)樗{(diào)用function()去編譯解釋。


兩個(gè)矩陣相加

這個(gè)依葫蘆畫瓢就可以大致解決了。

import numpyimport theano.tensor as Tfrom theano import functionx = T.dmatrix('x')y = T.dmatrix('y')z = x + yf = function([x, y], z)print f([[1, 2], [3, 4]], [[10, 20], [30, 40]])print f(numpy.array([[1, 2], [3, 4]]), numpy.array([[10, 20], [30, 40]]))123456789123456789

dmatrix是用于表示浮點(diǎn)矩陣的類型,所以我們的f就可以用于一個(gè)二維的數(shù)列。 我們也可以用numpy.array作為輸入。

當(dāng)然,將標(biāo)量加到矩陣,將向量加到矩陣,將標(biāo)量加到向量等等都是可以的。這種操作被稱為broadcasting

下面羅列一些Theano的類型:

byte: bscalar, bvector, bmatrix, brow, bcol, btensor3, btensor416-bit integers: wscalar, wvector, wmatrix, wrow, wcol, wtensor3, wtensor432-bit integers: iscalar, ivector, imatrix, irow, icol, itensor3, itensor464-bit integers: lscalar, lvector, lmatrix, lrow, lcol, ltensor3, ltensor4float: fscalar, fvector, fmatrix, frow, fcol, ftensor3, ftensor4double: dscalar, dvector, dmatrix, drow, dcol, dtensor3, dtensor4complex: cscalar, cvector, cmatrix, crow, ccol, ctensor3, ctensor4

習(xí)題

參照代碼

import theanoa = theano.tensor.vector() # declare variableout = a + a ** 10 # build symbolic expressionf = theano.function([a], out) # compile functionprint(f([0, 1, 2]))1234512345

寫出a2+b2+2?a?b的代碼。

from __future__ import print_functionimport theanoa = theano.tensor.vector() # declare variableb = theano.tensor.vector() # declare variableout = a ** 2 + b ** 2 + 2 * a * b # build symbolic expressionf = theano.function([a, b], out) # compile functionprint(f([1, 2], [4, 5])) # prints [ 25. 49.]
上一篇:sql索引語法

下一篇:0/1背包問題[python]

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 梅州市| 仲巴县| 万年县| 循化| 漯河市| 顺平县| 通渭县| 嘉善县| 柳江县| 巴中市| 宜州市| 桃江县| 长泰县| 兴城市| 突泉县| 榕江县| 江源县| 乐陵市| 敦煌市| 绥中县| 上虞市| 衢州市| 东乡县| 江口县| 酉阳| 泌阳县| 城固县| 陕西省| 乐山市| 阳西县| 余干县| 宁城县| 观塘区| 龙川县| 前郭尔| 汶上县| 杨浦区| 锡林郭勒盟| 兴安县| 南京市| 葵青区|