麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

theano學習初步(一)

2019-11-14 11:28:32
字體:
來源:轉載
供稿:網友

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

theano學習初步(一)

2016-09-05 12:29 510人閱讀 評論(0) 收藏 舉報 分類:

目錄(?)[+]

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

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

兩個標量相加

代碼如下

import numpyimport theano.tensor as Tfrom theano import function# 第一步,聲明兩個數學意義上的變量x = T.dscalar('x') # 浮點標量y = T.dscalar('y')z = x + y# f 返回的是一個0維度的numpy.ndarrayf = function([x, y], z) # 這兒會有一個明顯的延時,因為function需要編譯成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中每一個符號(就是代碼層次的變量)都要有一個類型(Type),這樣就能讓底層的C語言更好地處理代碼。 比如,T.dscalar是一個“0-多維的浮點數(d)數組(標量)”,這是一種類型而不是一個類。所以x和y都不是dscalar的實例,而是TensorVariable的實例。但是x和y的類型是dscalar,代碼如下

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

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

第二步

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

z = x + y11

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

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

第三步

最后一步是創建一個function,x和y是輸入,z是輸出

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

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

注意: 為了簡便,也可以跳過第三步,只是用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()傳遞一個字典來表示theano變量的值,這個值可以代替這些變量參與運算。 eval()的第一次調用會比較慢,因為它要調用function()去編譯解釋。


兩個矩陣相加

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

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是用于表示浮點矩陣的類型,所以我們的f就可以用于一個二維的數列。 我們也可以用numpy.array作為輸入。

當然,將標量加到矩陣,將向量加到矩陣,將標量加到向量等等都是可以的。這種操作被稱為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

習題

參照代碼

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.]
上一篇:Let

下一篇:設計模式-單例模式

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久精品国产一区二区电影 | 亚洲精品久久久久www | 欧美日韩视频在线播放 | 91九色国产视频 | 亚洲电影在线观看高清免费 | 精品国产一二区 | 日本在线看片 | 136福利视频| 免费视频一区 | 在线观看免费毛片视频 | 欧美成人免费看 | 在线看免电影网站 | 久久欧美亚洲另类专区91大神 | 国产一级桃视频播放 | 一区国产在线观看 | 亚洲精品91 | 亚洲va久久久噜噜噜久牛牛影视 | 天天色人人爱 | free国产hd老熟bbw | 日本视频免费观看 | 亚洲三区精品 | 国产一区日韩精品 | 国产精品久久久久久久久久久久久久久 | av免费在线观看av | 黄色影院在线观看视频 | 久久老司机精品视频 | 成人福利视频 | 久久线视频| 91av在线影院 | 日本精品黄色 | 亚洲福利在线视频 | 久久不射电影网 | 日本黄色a视频 | 久久人人人 | 媚药按摩痉挛w中文字幕 | 草久在线观看视频 | 五月天堂婷婷 | 日韩中文字幕一区二区三区 | 国产精品.com | 羞羞视频在线免费 | 成人免费自拍视频 |