用tensorflow实现弹性网络回归算法


Posted in Python onJanuary 09, 2018

本文实例为大家分享了tensorflow实现弹性网络回归算法,供大家参考,具体内容如下

python代码:

#用tensorflow实现弹性网络算法(多变量) 
#使用鸢尾花数据集,后三个特征作为特征,用来预测第一个特征。 
 
 
#1 导入必要的编程库,创建计算图,加载数据集 
import matplotlib.pyplot as plt 
import tensorflow as tf 
import numpy as np 
from sklearn import datasets 
from tensorflow.python.framework import ops 
 
ops.get_default_graph() 
sess = tf.Session() 
iris = datasets.load_iris() 
 
x_vals = np.array([[x[1], x[2], x[3]] for x in iris.data]) 
y_vals = np.array([y[0] for y in iris.data]) 
 
 
#2 声明学习率,批量大小,占位符和模型变量,模型输出 
learning_rate = 0.001 
batch_size = 50 
x_data = tf.placeholder(shape=[None, 3], dtype=tf.float32) #占位符大小为3 
y_target = tf.placeholder(shape=[None, 1], dtype=tf.float32) 
A = tf.Variable(tf.random_normal(shape=[3,1])) 
b = tf.Variable(tf.random_normal(shape=[1,1])) 
model_output = tf.add(tf.matmul(x_data, A), b) 
 
 
#3 对于弹性网络回归算法,损失函数包括L1正则和L2正则 
elastic_param1 = tf.constant(1.) 
elastic_param2 = tf.constant(1.) 
l1_a_loss = tf.reduce_mean(abs(A)) 
l2_a_loss = tf.reduce_mean(tf.square(A)) 
e1_term = tf.multiply(elastic_param1, l1_a_loss) 
e2_term = tf.multiply(elastic_param2, l2_a_loss) 
loss = tf.expand_dims(tf.add(tf.add(tf.reduce_mean(tf.square(y_target - model_output)), e1_term), e2_term), 0) 
 
 
 
#4 初始化变量, 声明优化器, 然后遍历迭代运行, 训练拟合得到参数 
init = tf.global_variables_initializer() 
sess.run(init) 
my_opt = tf.train.GradientDescentOptimizer(learning_rate) 
train_step = my_opt.minimize(loss) 
 
loss_vec = [] 
for i in range(1000): 
   rand_index = np.random.choice(len(x_vals), size=batch_size) 
   rand_x = x_vals[rand_index] 
   rand_y = np.transpose([y_vals[rand_index]]) 
   sess.run(train_step, feed_dict={x_data:rand_x, y_target:rand_y}) 
   temp_loss = sess.run(loss, feed_dict={x_data:rand_x, y_target:rand_y}) 
   loss_vec.append(temp_loss) 
   if (i+1)%250 == 0: 
     print('Step#' + str(i+1) +'A = ' + str(sess.run(A)) + 'b=' + str(sess.run(b))) 
     print('Loss= ' +str(temp_loss)) 
      
 
#现在能观察到, 随着训练迭代后损失函数已收敛。 
plt.plot(loss_vec, 'k--') 
plt.title('Loss per Generation') 
plt.xlabel('Generation') 
plt.ylabel('Loss') 
plt.show()

本文参考书《Tensorflow机器学习实战指南》

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
Nov 19 Python
python中map、any、all函数用法分析
Apr 21 Python
Django日志模块logging的配置详解
Feb 14 Python
手把手教你用python抢票回家过年(代码简单)
Jan 21 Python
Python实现将Excel转换成为image的方法
Oct 23 Python
Python基础教程之if判断,while循环,循环嵌套
Apr 25 Python
Python 循环终止语句的三种方法小结
Jun 24 Python
Python 离线工作环境搭建的方法步骤
Jul 29 Python
使用matplotlib绘制图例标签中带有公式的图
Dec 13 Python
基于PyQT实现区分左键双击和单击
May 19 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
May 20 Python
利用Selenium添加cookie实现自动登录的示例代码(fofa)
May 08 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
Jan 08 #Python
python matplotlib 注释文本箭头简单代码示例
Jan 08 #Python
Python自定义简单图轴简单实例
Jan 08 #Python
[原创]python爬虫(入门教程、视频教程)
Jan 08 #Python
小米5s微信跳一跳小程序python源码
Jan 08 #Python
Python实现判断字符串中包含某个字符的判断函数示例
Jan 08 #Python
Python实现的字典值比较功能示例
Jan 08 #Python
You might like
ie6 动态缩略图不显示的原因
2009/06/21 PHP
用PHP实现递归循环每一个目录
2010/08/08 PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
2011/08/22 PHP
解析php中如何直接执行SHELL
2013/06/28 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
PHP多线程编程之管道通信实例分析
2015/03/07 PHP
php实现文章置顶功能的方法
2016/10/20 PHP
浅析PHP7的多进程及实例源码
2019/04/14 PHP
PHP常用的类封装小结【4个工具类】
2019/06/28 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
2019/10/16 PHP
JQuery给元素添加/删除节点比如select
2013/04/02 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
jquery实现邮箱自动补全功能示例分享
2014/02/17 Javascript
jQuery Mobile页面返回不需要重新get
2016/04/26 Javascript
JavaScript_object基础入门(必看篇)
2016/06/13 Javascript
JavaScript lodash常见用法系列小结
2016/08/24 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
AngularJS辅助库browserTrigger用法示例
2016/11/03 Javascript
详解用node-images 打造简易图片服务器
2017/05/08 Javascript
angularjs之$timeout指令详解
2017/06/13 Javascript
微信小程序实现页面浮动导航
2020/01/08 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
2020/03/10 Javascript
[41:05]Serenity vs Pain 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python中验证码连通域分割的方法详解
2018/06/04 Python
Django框架验证码用法实例分析
2019/05/10 Python
python中的decimal类型转换实例详解
2019/06/26 Python
详解Python并发编程之创建多线程的几种方法
2019/08/23 Python
python os.rename实例用法详解
2020/12/06 Python
CSS3中Transition动画属性用法详解
2016/07/04 HTML / CSS
关于安全的标语
2014/06/10 职场文书
党员批评与自我批评材料
2014/10/14 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书
教师节简报
2015/07/20 职场文书
win11怎么用快捷键锁屏? windows11锁屏的几种方法
2021/11/21 数码科技
Python帮你解决手机qq微信内存占用太多问题
2022/02/15 Python