theano学习入门和进阶系列1: 基础数据结构和语法

theano学习笔记(二) :基础 一些基本运算 阅读详情

theano是一个经典的深度学习工具包,尽管是当前众多深度学习框架中唯一不支持分布式的,但其入门快、使用简单、对自定义修改的支持佳等都让它目前还是非常流行。本文结合基于theano实现logistic regression模型的过程来讲解theano入门的基础知识点,主要知识点详见code中的注释。

############################
#
# logistic regression
#
############################
import theano
import numpy
rng=numpy.random

#samples setting
samples_num=20
feats_num=5

"""
以下定义逻辑回归模型中的自变量x和因变量y,需要将它们定义为theano内置的数据类型。
theano的基础数据类型及多种内置函数均放在theano.tensor中,数据类型包含double、int、uchar、float等多种类型。
因为GPU一般是float32类型,因此一般都使用float而非double。
常用的基础数据结构如下:
标量:iscalar(int类型的标量)、fscalar(float类型的标量)
一维向量:ivector(int 类型的向量)、fvector(float类型的向量)、
二维矩阵:imatrix(int类型的矩阵)、fmatrix(float类型矩阵)
三维矩阵:itensor3(int类型的三维矩阵)、ftensor3(float类型的三维矩阵)  
四维矩阵:itensor5(int类型的四维矩阵)、ftensor4(float类型的四维矩阵)
依此类推
"""
#independent variables
x=theano.tensor.matrix('x')

#dependent variables
y=theano.tensor.vector('y')

"""
以下定义逻辑回归模型的参数w和b。此处将w和b均定义为theano.shared类型,即共享变量。
共享变量是theano中的一个重要概念,也是多线程编程中的一个重要概念,
是为支持多线程计算,在程序过程中允许多个线程共同访问和修改的变量。
在深度学习中整个计算过程基本都是使用多线程计算,因此模型的参数也均应设置为共享变量。
需要注意的是,共享变量必须要赋初始值。
"""
#parameters, shared variables
w=theano.shared(rng.randn(feats_num), name='w')
b=theano.shared(0.5, name='b')

#algorithm setting
alpha=0.01

"""
以下定义逻辑回归模型的cost function。
对于单个样本,采用的loss function为对数损失函数,即-y*log(y_pred)-(1-y)*log(1-p_pred)。
整体的cost function则为所有样本loss的均值外加正则化项。在此涉及的几个知识点如下:
(1)theano里的常用内置function
    theano.tensor.exp, theano.tensor.log,theano.tensor.dot
    variable.mean(),variabel.sum()等
(2)theano中function的定义形式
    类似函数式编程的方式,先定义自变量和因变量的类型以及因变量与自变量的关系,再去定义出一个具体的function。
    使用方法为theano.function(input=[list of independent variables],output=[list of dependent variables])。
 (3)theano中的求导
    theano.grad可以方便的求任意导数,省去了我们自己做推导的麻烦。
    具体使用方法为theano.grad(dependent variables, independent variables)
"""
#cost function
y_p=1/(1+theano.tensor.exp(-theano.tensor.dot(x,w) - b))
loss=-y * theano.tensor.log(y_p) - (1-y) * theano.tensor.log(1.0-y_p)
cost=loss.mean() + 0.01 * (w ** 2).sum()
dw, db = theano.grad(cost, [w, b])
predict=y_p>0.5
predict_function=theano.function([x],predict)

"""
updates是theano.function里的一个重要参数,用于更新共享变量。updates是一个或多个包含两个元素的tuple或list,比如updates=[old_w,new_w],当函数被调用后,程序会用new_w替换old_w。
在逻辑回归模型中需要更新两组参数,w和b,因此updates=((w,w-alpha*dw),(b,b-alpha*db))。其中alpha即为前面已定义的学习速率。
"""
train=theano.function([x,y],[predict,cost],updates=((w,w-alpha*dw),(b,b-alpha*db)))

"""
一个常用的内置函数,theano.tensor.neq,统计两组数中不相同的值数。适用于计算0-1损失函数。
"""
test_neq=theano.tensor.neq(predict,y)
precision=theano.tensor.mean(theano.tensor.neq(predict,y))
test=theano.function([x,y],[predict,precision,test_neq])

"""
numpy里的知识点:
rng.random是用于产生uniform distribution均匀分布
rng.randn是用于产生normal distribution正态分布。
"""
input_x=rng.randn(samples_num, feats_num).astype(numpy.float32)
input_y=rng.randint(size=samples_num, low=0, high=2).astype(numpy.float32)
for i in range(1000):
    print "======== step:",i
    pred, t_cost = train(input_x, input_y)
    print "cost:", t_cost
    print test(input_x, input_y), input_y
theano学习笔记 theano  一、搭建环境        安装:pip install theano==0.9.0     卸载:pip uninstall theano     查看版本号:import theano                 theano.__version__     设置gpu\cpu:         方法1:vim /root/.theanorc    阅读详情

相关推荐

Theano(1):windows、linux下安装深度学习库Theano

http://deeplearning.net/software/theano/install_windows.html 下载: git clone https://github.com/Theano/Theano.git 配置(cd到Theano根目录): python setup.py develop 测试: import theano 提

mmc2015的专栏 3336

Theano Python教程

Theano is a numerical computation library for Python. It is a common choice for implementing neural network models as it allows you to efficiently define, optimize and evaluate mathematical expression...

从零开始的教程世界 1038

Theano教程(个人笔记)

Theano的全部命令演示,word版本,敲完就可以掌握大多数命令

Theano简单入门(一):Theano与Lasagne的安装

一、介绍       Theano是一个Python库,专门用于定义、优化、求值数学表达式,效率高,适用于多维数组。特别适合做机器学习。一般来说,使用时需要安装python和numpy。      首先回顾一下机器学习的东西,定义一个模型(函数)f(x;w) x为输入,w为模型参数,然后定义一个损失函数c(f),通过数据驱动在一堆模型函数中选择最优的函数就是训练training的过程,在机器学...

花梦飞的博客 1万+

theano学习教程

theano学习教程

theano深度学习编程教程

theano为一python工具,用于处理深度学习中张量计算在GPU之上加速运算,本书为theano应用于深度学习的入门教程,简单易懂,英文版本。

Theano,一个超强的 Python 库!

Theano是一个强大的Python库,用于深度学习和数值计算。通过本文的介绍和示例代码,应该已经对Theano的功能和用法有了深入的了解,可以开始使用它来构建和训练深度神经网络,以解决各种实际应用场景中的问题。更多Python学习内容:ipengtao.com干货笔记整理100个爬虫常见问题.pdf ,太全了!Python 自动化运维 100个常见问题.pdfPython Web 开发常见的100个问题.pdf124个Python案例,完整源代码!PYTHON 3.10中文版官方文档。

涛哥聊Python 4305

Theano 学习教程(一) —— Numpy入门50题

Theano 学习教程(一) —— Numpy入门50题

Theano3.2-练习之数据集及目标函数介绍

来自http://deeplearning.net/tutorial/gettingstarted.html#gettingstarted 一、下载    在后续的每个学习算法上,都需要下载对应的文档,如果想要一次全部下好,那么可以复制git上面的这个教程的资料: git clone git://github.com/lisa-lab/DeepLearningTu...

weixin_34228662的博客 210

theano学习教程一

theano学习教程一的代码,jupyter notebook编写

word2vector入门教程

摘要: 网上已经有许多对w2v的介绍了,这里只是做一个简单的概括。下面这篇文章我认为是关于W2V写的比较好的文章,读者有兴趣可以先参考一下: w2v参考文章1 另外一篇是关于Skip-Gram和CBow的介绍。 Skip-Gram&CBOW 逻辑比较清晰的综述文章: 综述文章 数学原理很清晰很短的一篇文章(也有关于负采样的简单说明) 参考文章 1.什么

SCUT_Sam 1万+

Theano基础(一)

Theano基础(一) dmatrix('x')     Theano是Python的一个Deep  Learning 开源包,也可以很方便地利用它来做科学计算。我打算边学边记录一下。    参考:http://deeplearning.net/software/theano/tutorial/adding.html    这一小节我们的目标是利用Theano创建一个函数f

lihaoweicsdn的专栏 729

ARIMA模型的R实现

1.模型简介 ARIMA模型,全称差分自回归移动平均模型。可以看作是差分运算和ARMA模型的结合。主要是针对具有线性趋势的非平稳的时间序列,来进行建模预测。 ARIMA模型的形式如下: Φ(B)∇

heirenmin的博客 1万+

Theano官方文档的测试和总结(1):安装、基础语法、逻辑斯蒂回归

http://deeplearning.net/software/theano/NEWS.html 目录1. Theano的简介和安装1.1 Theano简介1.2 Theano安装2. 教程2.1 基础语法2.1.1 蹒跚学步--代数学2.1.2 熟悉 Theano的函数对象和操作 1. Theano的简介和安装 1.1 Theano简介 发布版本:Theano 1.0.0 (15th o...

LonghaoJia的博客 1934

单细胞RNA测序数据分析与可视化:从基础原理到高级应用

单细胞RNA测序(scRNA-seq)技术通过解析单个细胞的基因表达谱,显著提升了我们对细胞异质性的理解。本文详细介绍了scRNA-seq数据分析的完整流程,包括数据预处理、质量控制、降维、聚类、差异表达分析、细胞类型注释、细胞周期分析、轨迹分析、RNA速率分析、基因集富集分析、细胞通讯分析、批次效应校正以及空间转录组学整合。文章还展示了scrna_toolkit包在简化分析流程和增强数据可视化方面的应用。通过这一工具,研究者可以更高效地处理单细胞数据,揭示复杂的生物学信息。未来,该工具将进一步整合多组学分

2301_80338712的博客 4128

Java开发者必看:如何快速对接七大主流快递API(附完整代码示例)

本文为Java开发者提供了快速对接顺丰、京东、DHL等七大主流快递API的实战指南。文章深入剖析了不同API的认证、通信协议与参数差异,并提供了高可用的HTTP客户端配置、通用签名工具、SOAP请求处理以及可扩展的领域模型与适配层设计等完整代码示例,帮助开发者构建统一、健壮的物流集成框架,显著提升开发效率。

tech5的博客 727

Theano入门学习

文章目录前言环境基本概念概念速查表基本语法和特性基本代码条件语句scantheano构建模式一些关于theano个人理解参考资料 前言 本文不是一个教程。 最近在尝试完成一个theano项目向pytorch的迁移,希望能提高代码水平,提高对NN的理解。 我深知自己的文章肯定没有github大佬写的好,主要是用于个人记忆,以及记录一些关键点吧。以及重点记录一些对我个人比较重要的东西。 theano的应用:keras的默认后端是TensorFlow,但是同时也支持theano,可以切换回theano,实现更加底

qq_43380015的博客 941

LabVIEW多设备采集实战:1个程序同时控制3个RS485 Modbus仪表

本文详细介绍了如何使用LabVIEW实现多设备RS485 Modbus同步采集,涵盖硬件架构设计、多线程通信框架搭建、数据帧解析技巧及性能优化策略。通过实际项目案例,展示如何解决端口冲突、数据解析错误等工业自动化常见问题,提升采集系统实时性与可靠性。

qsc901234的博客 298

theano_exercises完全指南:从入门到精通的深度学习框架实战教程

theano_exercises是一套针对Theano深度学习框架的实战练习教程,旨在帮助开发者通过实践掌握Theano的核心功能和高级应用。Theano作为一款强大的符号计算库,特别适用于构建和训练深度学习模型,本指南将带你逐步探索其基础概念、实战技巧和进阶用法。 ## 📚 什么是Theano?为什么选择theano_exercises? Theano是由蒙特利尔大学开发的Python库,

gitblog_00204的博客 992

医学影像分割入门:为什么U-Net至今仍是肝脏CT肿瘤分割的‘首选’?

本文探讨了U-Net在肝脏CT肿瘤分割中的持久优势,分析了其轻量化设计、对称架构和跳跃连接如何完美适配医学影像的小样本、高精度需求。通过对比实验和实战建议,揭示了U-Net在肝脏肿瘤分割任务中超越新模型的根本原因,并提供了PyTorch实现和部署技巧。

weixin_38166931的博客 518

滞回比较器电路详细分析

滞回比较器是一种用于检测两个不同电压值并使比较器输出高电平或低电平的电路。滞回比较器的特点是具有迟滞特性,即当输入电压高于某一阈值时,比较器输出高电平,当输入电压低于另一阈值时,比较器输出低电平,而在这两个阈值之间,比较器的输出保持不变。比较器通常有两个模拟电压输入端UIN+和UIN-以及一个数字状态输出端UOUT。当UIN+大于UIN-时,UOUT为高电平;当UIN+小于UIN-时,UOUT为低电平。根据具体的系统定义,这两种电位的具体数值可以有所不同。

LuDvei的博客 2万+

theano入门学习

theano入门学习 原文地址:http://blog.csdn.NET/hjimce/article/details/46806923 作者:hjimce 本篇博文主要是在我刚入门学theano的一个学习历程的回顾,记录了自己深度学习学习征程的第一站。 一、初识theano 1、theano.tensor常用数据类型 学习theano,首先要学的就是t

wonengguwozai的博客 1万+

【异常】XXL-job触发调度:address:http://192.168.x.x:x/ code:500 msg:xxl-rpc remoting error(connect timed out)

XXL-JOB调度任务失败分析:调度中心(10.254.234.80)与执行器(192.168.x.x)连接超时,返回500错误。主要原因是网络不通或执行器异常:1.网络不通可能由防火墙或网段隔离导致;2.执行器未启动或端口未监听;3.地址配置错误。解决方案:1.关闭代理使用内网;2.测试网络连通性和端口可用性;3.检查执行器进程状态和端口监听情况;4.核对执行器地址配置;5.必要时配置防火墙规则放行端口。

奶爸的编程之路,也就一周冷个三天 413

Theano深度学习系列1

Theano深度学习第一课最近将英文原版书籍《python for data analysis》看完,也将《scikit-learn Cookbook》例子实现完,对基本的机器学习有一定的了解,下面来学习强大的python深度学习库Theano以及keras。首先直接上代码,接下来会慢慢解释该入门代码的真正含义,该入门是逻辑回归的实现。import numpy import theano impor

hadxu的博客 818

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

七小时 Theano 入门(Day 1)

Theano是现在热门的几个深度学习工具库之一,基于python,简单易用。虽然现在有不少好用的基于 Theano 的库(如Keras, Lasagne等),但从基础学习一下 Theano 对更好的理解代码和开展实验都是有帮助的。这个专题是本人这几天学习的经验总结,目的是对现在网上流行的部分“热门教程”进行一番去伪存真,总结出一条短时间学习 Theano 的可行之路。

毛可的专栏 1986

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: 常见面试算法题:N个数中寻找仅出现过1次的数
下一篇: 常见面试算法题:给定数组中寻找加和为特定数的两个数
StudyLess
博客等级 码龄10年 18粉丝 7原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值