首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

Theano

作者头像
裴来凡
发布2022-05-29 10:39:12
发布2022-05-29 10:39:12
32000
代码可运行
举报
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
复制
import numpy as np
import theano.tensor as T
import theano
from theano import function
import matplotlib.pyplot as plt
class Layer(object):
    def __init__(self,inputs,in_size,out_size,activation_function=None):
        #权重: 平均值为0 方差为1 行数为in_size  列数为out_size
        self.W=theano.shared(np.random.normal(0,1,(in_size,out_size)))
        #bias
        self.b=theano.shared(np.zeros((out_size,))+0.1)
        #乘法加bias
        self.Wx_plus_b=T.dot(inputs,self.W)+self.b#dot乘法
        #激励函数
        self.activation_function=activation_function
        #默认为None,否则进行激活
        if activation_function is None: 
            self.outputs=self.Wx_plus_b
        else: 
            self.outputs=self.activation_function(self.Wx_plus_b)           
#回归神经网络 Regression           
#步骤1:制造虚拟数据
x_data=np.linspace(-1,1,100)[:,np.newaxis]#100个点进行训练
noise=np.random.normal(0,0.05,x_data.shape)
y_data=np.square(x_data)-0.1+noise#y=x^2-0.1
#一元二次散点图
plt.scatter(x_data,y_data)
plt.show()
#步骤2:定义输入和神经元
x=T.dmatrix('x')#d代表64位float类型
y=T.dmatrix('y')
#增加层数
L1=Layer(x,1,10,T.nnet.relu) 
L2=Layer(L1.outputs,10,1,None)
#步骤3:计算误差与梯度下降更新
#误差为预测值与真实值差别
cost=T.mean(T.square(L2.outputs-y))#求平均误差
#梯度下降
gW1,gb1,gW2,gb2=T.grad(cost,[L1.W,L1.b,L2.W,L2.b])#权重和bias
#学习效率
learning_rate=0.05
#更新四个神经网络的参数
train=theano.function(
    inputs=[x,y],
    outputs=cost,
    updates=[(L1.W,L1.W-learning_rate*gW1),
               (L1.b,L1.b-learning_rate*gb1),
               (L2.W,L2.W-learning_rate*gW2),
               (L2.b,L2.b-learning_rate*gb2)
               ] 
    ) 
#步骤4:预测结果
predict=theano.function(inputs=[x],outputs=L2.outputs)
for i in range(1000):
    err=train(x_data,y_data)#误差
    #每隔100步输出err
    if i % 100==0: 
        print(err)

0.47319827005737614 0.012205626040705037 0.00751665467921436 0.00562511127422009 0.004310605273226868 0.003447855699296902 0.002931589214229289 0.0026120026531145256 0.002402182708309157 0.002271440180430362

算法:Theano是适用于定义、优化、求值等,特别适合搭建机器学习框架。

链接:https://mofanpy.com/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 图像处理与模式识别研究所 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档