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找不到当前线程的会话   同步Java同步方法调用非同步方法   这段代码的java时间复杂度是如何列出一个集合的所有子集的?   java Jetty SslConnectionFactory nextProtocol   为什么在java集合中使用游标而不是for循环   java如何对长函数进行单元测试?   如何从java中的文本输入创建数组   java工具栏内容未显示,尽管出现了片段内容   java MediaPlayer无法处理本地文件   java在多次读取时,从TCP服务器读取的数据将挂起   java组织。springframework。数据领域无法将PageImpl强制转换为   java如何使用@WithMockUser并从属性文件中传递用户名和密码?   JavaSpringBootGradle插件2。x如何使用自定义启动器布局工厂   sockets Java客户端和服务器之间使用字符串等进行通信的“行业标准”方法是什么   java变量引用不存在的资源:${project\u loc:project\u name}   搜索如何返回LDAP Java中所有用户的特定属性?   JDK1.8.016x的java密钥斗篷代理问题   spring如何使用Java中的Exchange获取邮件   java Kotlin+Dagger 2:Dagger*文件不会生成   如何在传入的double上执行操作,然后在Java中返回