Theano的随机优化程序

downhill的Python项目详细描述


https://travis-ci.org/lmjohns3/downhill.svghttps://coveralls.io/repos/lmjohns3/downhill/badge.svghttp://depsy.org/api/package/pypi/downhill/badge.svg

DOWNHILL

downhill包提供了最小化标量损失的算法 使用Theano定义的函数。

包括几种优化算法:

所有算法都允许使用规则或nesterov风格的动量。

快速入门:矩阵分解

假设你有100个1000维数据样本,你想 以10维为基础将数据表示为100个系数。这是 使用theano建模非常简单:可以使用矩阵 作为数据模型的乘法,用于优化的平方误差项,以及 稀疏正则化以鼓励较小的系数值。

一旦构建了损失的表达式,就可以使用 一次呼叫downhill.minimize

importdownhillimportnumpyasnpimporttheanoimporttheano.tensorasTTFLOAT='df'[theano.config.floatX=='float32']defrand(a,b):returnnp.random.randn(a,b).astype(FLOAT)A,B,K=20,5,3# Set up a matrix factorization problem to optimize.u=theano.shared(rand(A,K),name='u')v=theano.shared(rand(K,B),name='v')z=TT.matrix()err=TT.sqr(z-TT.dot(u,v))loss=err.mean()+abs(u).mean()+(v*v).mean()# Minimize the regularized loss with respect to a data matrix.y=np.dot(rand(A,K),rand(K,B))+rand(A,B)# Monitor during optimization.monitors=(('err',err.mean()),('|u|<0.1',(abs(u)<0.1).mean()),('|v|<0.1',(abs(v)<0.1).mean()))downhill.minimize(loss=loss,train=[y],patience=0,batch_size=A,# Process y as a single batch.max_gradient_norm=1,# Prevent gradient explosion!learning_rate=0.1,monitors=monitors,monitor_gradients=True)# Print out the optimized coefficients u and basis v.print('u =',u.get_value())print('v =',v.get_value())

如果您希望在优化期间保持对模型的更多控制, 下坡提供迭代优化界面:

opt=downhill.build(algo='rmsprop',loss=loss,monitors=monitors,monitor_gradients=True)formetrics,_inopt.iterate(train=[[y]],patience=0,batch_size=A,max_gradient_norm=1,learning_rate=0.1):print(metrics)

如果这还不够的话,你可以直接要求下坡的更新 你的模型变量和你自己做的一切:

updates=downhill.build('rmsprop',loss).get_updates(batch_size=A,max_gradient_norm=1,learning_rate=0.1)func=theano.function([z],loss,updates=list(updates))for_inrange(100):print(func(y))# Evaluate func and apply variable updates.

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在jetty请求日志中添加milliscond字段?   java在使用Scanner类从文件读取信息时遇到问题   为什么。类不适用于泛型类型?   SQLite插入上的java空指针异常   java能告诉我们Guava缓存是在禁用统计数据的情况下构建的吗?   java在应用程序中使用常量   java无法使用AutoIT和Selenium Webdriver在所需位置/文件夹保存图像   java如何在jtable中更新jprogress栏   java是比较给定日期和当前日期(在给定时区中没有时间段)的最佳方法   安卓代码中的java错误   java无法访问实体类中的字段   java如何在tomcat中处理三个JDBC连接池?   java无法使用Spring Security保护AngularJS页面   如何在没有TCP/IP协议栈的情况下用Java发送以太帧