用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的@property装饰器的用法
Apr 28 Python
python方向键控制上下左右代码
Jan 20 Python
Python控制Firefox方法总结
Jun 03 Python
详解用python生成随机数的几种方法
Aug 04 Python
Transpose 数组行列转置的限制方式
Feb 11 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
Mar 31 Python
在python里使用await关键字来等另外一个协程的实例
May 04 Python
vscode写python时的代码错误提醒和自动格式化的方法
May 07 Python
解决Python安装cryptography报错问题
Sep 03 Python
Python读取图像并显示灰度图的实现
Dec 01 Python
python 发送邮件的四种方法汇总
Dec 02 Python
教你如何使用Python开发一个钉钉群应答机器人
Jun 21 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
PHP.MVC的模板标签系统(二)
2006/09/05 PHP
yii上传文件或图片实例
2014/04/01 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
2015/07/01 PHP
js中几种去掉字串左右空格的方法
2006/12/25 Javascript
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
jquery监控数据是否变化(修正版)
2011/04/12 Javascript
js中页面的重新加载(当前页面/上级页面)及frame或iframe元素引用介绍
2013/01/24 Javascript
JS中类或对象的定义说明
2014/03/10 Javascript
javascript设计模式--策略模式之输入验证
2015/11/27 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
Angularjs 根据一个select的值去设置另一个select的值方法
2018/08/13 Javascript
TypeScript中使用getElementXXX()的示例代码
2019/09/12 Javascript
Vue-Cli项目优化操作的实现
2019/10/27 Javascript
python获得两个数组交集、并集、差集的方法
2015/03/27 Python
python读写二进制文件的方法
2015/05/09 Python
Python2 Selenium元素定位的实现(8种)
2019/02/25 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
2019/06/17 Python
django Admin文档生成器使用详解
2019/07/22 Python
Python zip函数打包元素实例解析
2019/12/11 Python
python实现tail -f 功能
2020/01/17 Python
PyQT5 实现快捷键复制表格数据的方法示例
2020/06/19 Python
25个CSS3动画按钮和菜单教程分享
2012/10/03 HTML / CSS
css3实现的下拉菜单效果示例
2014/01/22 HTML / CSS
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
html5声频audio和视频video等新特性详细说明
2012/12/26 HTML / CSS
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
人事专员工作职责
2014/02/22 职场文书
程序员求职信
2014/04/16 职场文书
工作评语大全
2014/04/26 职场文书
环卫工作汇报材料
2014/10/28 职场文书
2014年项目经理工作总结
2014/11/24 职场文书
小学教师自我评价
2015/03/04 职场文书
赢在执行观后感
2015/06/16 职场文书
2015年国庆放假通知范文
2015/08/18 职场文书
python 管理系统实现mysql交互的示例代码
2021/12/06 Python
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫