用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中使用HTMLParser解析html实例
Feb 08 Python
在Python的Django框架中创建语言文件
Jul 27 Python
Python实现登录接口的示例代码
Jul 21 Python
使用paramiko远程执行命令、下发文件的实例
Oct 01 Python
Django中的Signal代码详解
Feb 05 Python
python3 图片referer防盗链的实现方法
Mar 12 Python
对PyQt5中树结构的实现方法详解
Jun 17 Python
python迭代器常见用法实例分析
Nov 22 Python
Python requests模块cookie实例解析
Apr 14 Python
python处理写入数据代码讲解
Oct 22 Python
python 匿名函数与三元运算学习笔记
Oct 23 Python
vue.js刷新当前页面的实例讲解
Dec 29 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中iconv函数知识汇总
2015/07/02 PHP
php解决约瑟夫环算法实例分析
2019/09/30 PHP
简单的php购物车代码
2020/06/05 PHP
javascript 一个函数对同一元素的多个事件响应
2009/07/25 Javascript
js操作时间(年-月-日 时-分-秒 星期几)
2010/06/20 Javascript
javascript 实用的文字链提示框效果
2010/06/30 Javascript
js限制文本框只能输入数字(正则表达式)
2012/07/15 Javascript
非常好用的JsonToString 方法 简单实例
2013/07/18 Javascript
javascript的parseFloat()方法精度问题探讨
2013/11/26 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
2015/03/31 Javascript
javascript正则表达式定义(语法)总结
2016/01/08 Javascript
jquery.validate 自定义验证方法及validate相关参数
2016/01/18 Javascript
javascript this详细介绍
2016/09/19 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
使用async-validator编写Form组件的方法
2018/01/10 Javascript
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
Node.js模拟发起http请求从异步转同步的5种用法
2018/09/26 Javascript
Element PageHeader页头的使用方法
2020/07/26 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
使用Python从零开始撸一个区块链
2018/03/14 Python
详解python中Numpy的属性与创建矩阵
2018/09/10 Python
python利用pandas将excel文件转换为txt文件的方法
2018/10/23 Python
对Python正则匹配IP、Url、Mail的方法详解
2018/12/25 Python
对python3中的RE(正则表达式)-详细总结
2019/07/23 Python
django与vue的完美结合_实现前后端的分离开发之后在整合的方法
2019/08/12 Python
Python要如何实现列表排序的几种方法
2020/02/21 Python
Pycharm github配置实现过程图解
2020/10/13 Python
详解python中的三种命令行模块(sys.argv,argparse,click)
2020/12/15 Python
波兰香水和化妆品购物网站:Notino.pl
2017/11/07 全球购物
狗狗玩具、零食和咀嚼物的月度送货服务:Super Chewer
2018/08/22 全球购物
正宗的日本零食和糖果订阅盒:Bokksu
2019/11/21 全球购物
蟋蟀的住宅教学反思
2014/04/26 职场文书
群众路线剖析材料(四风)
2014/11/05 职场文书
2015年党支部公开承诺书
2015/01/22 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书