深度学习的始祖框架,grandfather级别的框架 —— Theano —— 示例代码学习(5)
代码1:(求雅可比矩阵, jacobian矩阵求解)
import theano
from theano import tensor
# Creating a vector
x = tensor.dvector('x')
# Creating 'y' expression
y = (2 * x ** 3)
# Computing derivative
Output, updates = theano.scan(lambda i, y, x : tensor.grad(y[i], x),\
sequences=tensor.arange(y.shape[0]),\
non_sequences=[y, x])
# Creating function
# fun = theano.function([x], Output, updates=updates)
fun = theano.function([x], Output)
# Calling function
print( fun([3,3]) )
运行结果:
代码2:(求黑森矩阵, Hession矩阵求解)
import theano
from theano import tensor
# Creating a vector
x = tensor.dvector('x')
# Creating 'y' expression
y = (2 * x ** 3)
# Calculating cost
cost = y.sum()
# Computing derivative
derivative = tensor.grad(cost, x)
output, updates = theano.scan(lambda i, derivative,x : \
tensor.grad(derivative[i], x),\
sequences=tensor.arange(derivative.shape[0]),\
non_sequences=[derivative, x])
# Creating function
# fun = theano.function([x], output, updates=updates)
fun = theano.function([x], output)
# Calling function
print( fun([3,3]) )
运行结果:
代码3:(theano自定义列表List类型)
import theano.typed_list
# Creating typedlist
f1 = theano.typed_list.TypedListType(theano.tensor.fvector)()
# Creating a vector
f2 = theano.tensor.fvector()
# Appending 'f1' and 'f2'
f3 = theano.typed_list.append(f1, f2)
# Creating function which takes two vectors 'f1' and 'f2' as input and gives 'f3' as output
fun = theano.function([f1, f2], f3)
# Calling function
print( fun([[1,2]], [2]) )
print( type(fun([[1,2]], [2])) )
运行结果:
代码4:(theano的switch选择函数)
import theano
from theano import tensor
# Creating two scalars
x, y = tensor.scalars('x', 'y')
xx, yy = tensor.vectors('xx', 'yy')
# switch expression
switch_expression = tensor.switch(tensor.gt(x, y), x, y)
switch_expression2 = tensor.switch(tensor.gt(xx, yy), xx, yy)
# Creating function
fun = theano.function([x, y], switch_expression, mode=theano.compile.mode.Mode(linker='vm'))
fun2 = theano.function([xx, yy], switch_expression2, mode=theano.compile.mode.Mode(linker='vm'))
# Calling function fun(12,11)
print( fun(12,11) )
print( fun2([2, 2, 2], [1, 1, 1]) )
print( fun2([2, 0, 2], [1, 3, 1]) )
运行结果:
代码5:
import theano
# Creating a theano variable 'x' with value 10
x = theano.shared(10, 'xxx')
#This will just print the variable x
print(x)
# Eval function
print(x.eval()) #This will print its actual value
运行结果:
代码6:(和概率推断框架pymc3联合使用)(PyMC3框架联合使用)
import theano
from theano import tensor
import pymc3 as pm
# Creating pymc3 model
model = pm.Model()
# Creating tensor variable
mu = tensor.scalar('mu')
# Log-normal distribution
distribution = pm.Normal.dist(0, 1).logp(mu)
# Creating function
fun = theano.function([mu], distribution)
# Calling function
print( fun(4) )
运行结果:
代码7:
import theano
from theano import tensor
from theano.ifelse import ifelse
# Creating variables
# Input neuron
x = tensor.vector('x')
# Weight
w = tensor.vector('w')
# Bias
b = tensor.scalar('b')
# Creating expression:
z = tensor.dot(x,w)+b
# Output neuron
o = ifelse(tensor.lt(z,0),0,1)
fun_neural_network = theano.function([x,w,b],o)
# Defining Inputs, Weights and bias
inputs = [ [0, 0], [0, 1], [1, 0], [1, 1] ]
weights = [ 1, 1]
bias = 0
# Iterate through all inputs and find outputs:
for ip in range(len(inputs)):
m = inputs[ip]
out = fun_neural_network(m,weights,bias)
print('The output for x1 = {} & x2 = {} is {}'.format(m[0],m[1],out))
运行结果:
代码8:
import theano
from theano import tensor
from theano.ifelse import ifelse
import numpy as np
from random import random
# Creating variables:
x = tensor.matrix('x') #Input neurons
w1 = theano.shared(np.array([random(),random()])) #Random generation of weights
w2 = theano.shared(np.array([random(),random()]))
w3 = theano.shared(np.array([random(),random()]))
b1 = theano.shared(1.) #Bias
b2 = theano.shared(1.)
rate_of_learning = 0.01 # Learning rate
y1 = 1/(1+tensor.exp(-tensor.dot(x,w1)-b1))
y2 = 1/(1+tensor.exp(-tensor.dot(x,w2)-b1))
x2 = tensor.stack([y1,y2],axis=1)
y3 = 1/(1+tensor.exp(-tensor.dot(x2,w3)-b2))
actual = tensor.vector('actual') #Actual output
cost = -(actual*tensor.log(y3) + (1-actual)*tensor.log(1-y3)).sum()
dervw1,dervw2,dervw3,dervb1,dervb2 = tensor.grad(cost,[w1,w2,w3,b1,b2])
# Model training
model_train = theano.function( inputs = [x, actual],\
outputs = [y3, cost],\
updates = [ [w1, w1-rate_of_learning*dervw1],\
[w2, w2-rate_of_learning*dervw2],\
[w3, w3-rate_of_learning*dervw3],\
[b1, b1-rate_of_learning*dervb1],\
[b2, b2-rate_of_learning*dervb2] ] )
inputs = [ [0, 0], [0, 1], [1, 0], [1, 1] ]
outputs = [0,1,0,1]
# Iterate through all inputs and find outputs:
cost = []
for i in range(100000):
pred, cost_iteration = model_train(inputs, outputs)
cost.append(cost_iteration)
# Output
print('The outputs of the Neural network are => ')
for i in range(len(inputs)):
print('The output for x1 = {} | x2 = {} => {}'.format(inputs[i][0],inputs[i][1],pred[i]))
运行结果:
代码9:(矩阵拼接)
import theano
from theano import tensor
# Creating two matrices
a, b = tensor.matrices('a', 'b')
# Using concatenate function
merge_c = tensor.concatenate([a, b])
# Creating function
cancat_function = theano.function([a, b], merge_c)
# Calling function
print( cancat_function([[1,2]], [[1,2], [3,4]]) )
运行结果:
深度学习的始祖框架,grandfather级别的框架 —— Theano —— 示例代码学习(5)的更多相关文章
- iView学习笔记(一):Table基本操作(包含前后端示例代码)
iView表格操作 1.前端准备工作 首先新建一个项目,然后引入iView插件,配置好router npm安装iView npm install iview --save cnpm install i ...
- 【深度学习系列3】 Mariana CNN并行框架与图像识别
[深度学习系列3] Mariana CNN并行框架与图像识别 本文是腾讯深度学习系列文章的第三篇,聚焦于腾讯深度学习平台Mariana中深度卷积神经网络Deep CNNs的多GPU模型并行和数据并行框 ...
- [源码解析] 深度学习分布式训练框架 horovod (5) --- 融合框架
[源码解析] 深度学习分布式训练框架 horovod (5) --- 融合框架 目录 [源码解析] 深度学习分布式训练框架 horovod (5) --- 融合框架 0x00 摘要 0x01 架构图 ...
- 深度神经网络DNN的多GPU数据并行框架 及其在语音识别的应用
深度神经网络(Deep Neural Networks, 简称DNN)是近年来机器学习领域中的研究热点,产生了广泛的应用.DNN具有深层结构.数千万参数需要学习,导致训练非常耗时.GPU有强大的计算能 ...
- iOS学习——iOS 整体框架及类继承框架图
整理自:IOS 整体框架类图值得收藏 一 整体框架 在iOS开发过程中,对iOS的整理框架的了解和学习是必不可少的一个环节,今天我们就好好来了解一下iOS的整体框架.首先贴一个关于iOS的框架介绍:i ...
- SpringBoot学习笔记(13):日志框架
SpringBoot学习笔记(13):日志框架——SL4J 快速开始 说明 SpringBoot底层选用SLF4J和LogBack日志框架. SLF4J的使用 SpringBoot的底层依赖关系 1. ...
- Duilib学习笔记《01》— duilib整体框架认识
从GoogleCode上下载的duilib工程中附带的一副总体设计图(如下所示),可以先整体了解一下,有个初步的认识,对后续进一步深入了解学习会很有帮助. 通过设计图有了一个初步认识后,接下来开始进一 ...
- Linux学习笔记之Linux启动级别
对于绝大多数Linux程序员来说,进入Linux系统后一般看到的是黑乎乎的界面(开发模式),因为系统如果启动选择开发模式,会减少启动时间,优化内存等.但是通常我们刚安装完Linux系统,然后进去以后是 ...
- Android新技术学习——阿里巴巴免Root无侵入AOP框架Dexposed
阿里巴巴无线事业部近期开源的Android平台下的无侵入运行期AOP框架Dexposed,该框架基于AOP思想,支持经典的AOP使用场景.可应用于日志记录,性能统计,安全控制.事务处理.异常处理等方面 ...
- 微信开发学习日记(六):weiphp框架
最近重点在看weiphp这个开源的第三方微信公众平台框架. 在网上找微信资料,找到了这个.很早之前,就初步学习了Thinkphp和Onethink2个开源框架,当看到weiphp是用这2个框架开发的时 ...
随机推荐
- FlashDuty Changelog 2023-10-30 | 告警路由与 Slack 应用
FlashDuty:一站式告警响应平台,前往此地址免费体验! 告警路由 什么是告警路由? FlashDuty已经与Zabbix.Prometheus等监控系统实现无缝集成,通过一个简单的webhook ...
- 使用 OpenTelemetry 构建可观测性 03 - 导出
上一个博文中,我提到如何使用 OpenTelemery 的特定语言 API 来收集遥测数据,包含手动和自动的埋点技术,这很重要!但是,收集遥测数据只是解决方案的第一步. 你需要把遥测数据路由转发到其他 ...
- des加密,url编码,url解码,des解密 DES加解密及Wrong key size错误处理
des加密,url编码,url解码,des解密 DES加解密及Wrong key size错误处理 package com.example.core.mydemo.des; import javax. ...
- XAF 属性编辑器(PropertyEditor)- 原理篇
前言 随着 DEV24.1.3 的发布,XAF Blazor 中的属性编辑器(PropertyEditor)也进行了很大的改动,在使用体验上也更接近 WinForm 了,由于进行了大量的封装,理解上没 ...
- 架构师必知的11种API性能优化方法
前言 接口性能优化是后端开发人员经常碰到的一道面试题,因为它是一个跟开发语言无关的公共问题. 这个问题既可以很简单,也可以相当复杂. 有时候,只需要添加一个索引就能解决. 有时候,代码需要进行重构. ...
- ecnuoj 5042 龟速飞行棋
5042. 龟速飞行棋 题目链接:5042. 龟速飞行棋 赛中没过,赛后补题时由于题解有些抽象,自己写个题解. 可以发现每次转移的结果只跟后面两个点的胜负状态有关. 不妨设 \(f_{u,a,b}\) ...
- 扫描版PDF目录制作指南
目前网上找到的扫描版的电子书往往没有目录,这使得阅读变得非常困难.本文总结我的经验,介绍快速制作扫描版 PDF 目录的方法,以便更轻松地阅读扫描版电子书. 本文首先介绍手动制作目录的方法,之后介绍如何 ...
- 从PDF到OFD,国产化浪潮下多种文档格式导出的完美解决方案
前言 近年来,中国在信息技术领域持续追求自主创新和供应链安全,伴随信创上升为国家战略,一些行业也开始明确要求文件导出的格式必须为 OFD 格式.OFD 格式目前在政府.金融.税务.教育.医疗等需要文件 ...
- debian12 创建本地harbor镜像库
前言 harbor是一个docker/podman镜像管理库,可用于存储私人镜像.现将本人在debian12系统搭建harbor镜像库的过程记录下来,留作后续参考. 可以参考github harbor ...
- Linux开发人员常用命令
常用查询命令 # 查看ip地址 ip addr show # 查看当前目录路径 pwd # 当前目录下模糊查找文件 find / -name "*.pdf" 查看运行中进程 ps ...