theano学习过程

1.定义变量

import numpy as np
import theano.tensor as T
from theano import function

定义常量

x = T.dscalar('x')  # 建立 x 的容器
y = T.dscalar('y')  # 建立 y 的容器
#或
x,y,w = T.dscalars('x','y','w')

定义矩阵

x = T.dmatrix('x')  # 矩阵 x 的容器
y = T.dmatrix('y')  # 矩阵 y 的容器

#或
x,y = T.dmatrices('x','y')

所有数据类型:

2. 做运算

主要用function进行运算

function有两个参数,输入和输出,同时可以用来定义一个自定义名字函数,传入参数时只传入输入的参数。

x = T.dmatrix('x')
s = 1/(1+T.exp(-x)) # logistic or soft step 
logistic = theano.function([x], s)
print(logistic([[0,1],[-2,-3]]))

"""
[[ 0.5         0.73105858]
 [ 0.26894142  0.11920292]]
"""

function有多个输出及输入,用方括号集合。

f = theano.function([a,b], [diff,abs_diff,diff_squared])

3.shared变量

shared变量,意思是这些变量可以在运算过程中,不停地进行交换和更新值。 在定义 weights 和 bias 的情况下,会需要用到这样的变量。

定义变量的同时,要定义初始值和名字。

state = theano.shared(np.array(0,dtype=np.float64), 'state') # inital state = 0

提取变量当前值,使用get_value()

# to get variable value
print(state.get_value())
# 0.0

设置变量值,用set_value()

state.set_value(-1)

4.theano使用激活函数

http://deeplearning.net/software/theano/library/tensor/nnet/nnet.html

(1) sigmoid:输入越小,越趋近于0,输入越大,越趋近于1

theano.tensor.nnet.nnet.sigmoid(x)

用法:

import theano.tensor as T

x, y, b = T.dvectors('x', 'y', 'b')
W = T.dmatrix('W')
y = T.nnet.sigmoid(T.dot(W, x) + b)

(2) softplus:

输入值小于 0 时,输出值接近 0, 当输入值大于 0 时,输出值是非线性的上升关系。可以很好地处理具有非线性的逻辑关系的输入值。 

theano.tensor.nnet.nnet.softplus(x)

(3) softmax

theano.tensor.nnet.nnet.softmax(x)

x,y,b = T.dvectors('x','y','b')
W = T.dmatrix('W')
y = T.nnet.softmax(T.dot(W,x) + b)

(4)relu

theano.tensor.nnet.relu(xalpha=0)

翻译以下就是alpha参数的值为1的时候,是线性激活函数

5. 计算交叉熵

(1)theano.tensor.nnet.nnet.binary_crossentropy(outputtarget)

x, y, b, c = T.dvectors('x', 'y', 'b', 'c')
W = T.dmatrix('W')
V = T.dmatrix('V')
h = T.nnet.sigmoid(T.dot(W, x) + b)
x_recons = T.nnet.sigmoid(T.dot(V, h) + c)
recon_cost = T.nnet.binary_crossentropy(x_recons, x).mean()

(2)theano.tensor.nnet.nnet.sigmoid_binary_crossentropy(outputtarget)

6.T.concatenate

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值