用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 相关文章推荐
Linux下编译安装MySQL-Python教程
Feb 02 Python
深入理解Python对Json的解析
Feb 14 Python
influx+grafana自定义python采集数据和一些坑的总结
Sep 17 Python
Python3 jupyter notebook 服务器搭建过程
Nov 30 Python
元组列表字典(莫烦python基础)
Apr 03 Python
Opencv实现抠图背景图替换功能
May 21 Python
华为校园招聘上机笔试题 扑克牌大小(python)
Apr 22 Python
Python configparser模块配置文件过程解析
Mar 03 Python
Python暴力破解Mysql数据的示例
Nov 09 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
Nov 17 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
Mar 04 Python
浅谈怎么给Python添加类型标注
Jun 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
SMARTY学习手记
2007/01/04 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
2017/06/02 PHP
兼容ie、firefox的图片自动缩放的css跟js代码分享
2012/01/21 Javascript
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
一个检测表单数据的JavaScript实例
2014/10/31 Javascript
浅谈jquery.fn.extend与jquery.extend区别
2015/07/13 Javascript
jQuery UI库中dialog对话框功能使用全解析
2016/04/23 Javascript
JavaScript判断是否是微信浏览器
2016/06/13 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
Node.js创建HTTP文件服务器的使用示例
2018/05/11 Javascript
JS数组转字符串实现方法解析
2020/09/04 Javascript
重命名批处理python脚本
2013/04/05 Python
python实现数通设备端口监控示例
2014/04/02 Python
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
python中利用队列asyncio.Queue进行通讯详解
2017/09/10 Python
Linux上使用Python统计每天的键盘输入次数
2019/04/17 Python
python列表推导式操作解析
2019/11/26 Python
简单了解python字符串前面加r,u的含义
2019/12/26 Python
初学者学习Python好还是Java好
2020/05/26 Python
HTML5时代CSS设置漂亮字体取代图片
2014/09/04 HTML / CSS
HTML5 在canvas中绘制矩形附效果图
2014/06/23 HTML / CSS
html5关于外链嵌入页面通信问题(postMessage解决跨域通信)
2020/07/20 HTML / CSS
Sofft鞋官网:世界知名鞋类品牌
2017/03/28 全球购物
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
市政施工员自我鉴定
2014/01/15 职场文书
会计电算化毕业生自荐信
2014/03/03 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
学习计划书怎么写
2014/09/15 职场文书
夫妻双方自愿离婚协议书怎么写
2014/12/01 职场文书
自主招生专家推荐信
2015/03/26 职场文书
2015年艾滋病防治工作总结
2015/05/22 职场文书
教师个人工作总结范文2015
2015/10/14 职场文书
会计手工模拟做账心得体会
2016/01/22 职场文书
2016年最美孝心少年事迹材料
2016/02/26 职场文书
Python办公自动化解决world文件批量转换
2021/09/15 Python