Theano深度学习(逻辑回归)

转载:http://deeplearning.net/software/theano/tutorial/examples.html
核心要点:共享变量shared,函数构建function

import numpy
import theano
import theano.tensor as T
rng = numpy.random

N = 400                                   # 训练样本数量
feats = 700                               # 样本特征数量

# 随机产生训练数据集: D = (input_values, target_class)
D = (rng.randn(N, feats), rng.randint(size=N, low=0, high=2))
training_steps = 1000

# 声明theano变量,x为矩阵,y为向量
x = T.dmatrix("x")
y = T.dvector("y")

# 随机初始化权重向量w,保存为共享变量以便梯度迭代更新
w = theano.shared(rng.randn(feats), name="w")

# 初始化偏移变量b,即z=wx+b
b = theano.shared(0., name="b")

#打印初始化变量w,b
print("Initial model:")
print(w.get_value())
print(b.get_value())

# 构建theano函数表达式
p_1 = 1 / (1 + T.exp(-T.dot(x, w) - b))   # 利用s函数计算概率值(矩阵运算)
prediction = p_1 > 0.5                    # 预测目标变量
xent = -y * T.log(p_1) - (1-y) * T.log(1-p_1) # 目标优化函数(交叉熵)
cost = xent.mean() + 0.01 * (w ** 2).sum()# 含有正则化L2的损失函数
gw, gb = T.grad(cost, [w, b])             # 梯度下降法函数构建


# 训练函数构建,输入[x,y],输入目标函数值变量[prediction, xent],表示每个样本的预测值和损失值,更新策略采用梯度下降法
train = theano.function(
          inputs=[x,y],
          outputs=[prediction, cost],
          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 "%s:%s"%(i,err)

#打印结果
print("Final model:")
print(w.get_value())
print(b.get_value())
print("target values for D:")
print(D[1])
print("prediction on D:")
print(predict(D[0]))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值