用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中处理字符串的相关的len()方法的使用简介
May 19 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
Sep 20 Python
快速了解Python相对导入
Jan 12 Python
python中正则表达式的使用方法
Feb 25 Python
pycharm下查看python的变量类型和变量内容的方法
Jun 26 Python
在dataframe两列日期相减并且得到具体的月数实例
Jul 03 Python
Python实现八皇后问题示例代码
Dec 09 Python
python3对接mysql数据库实例详解
Apr 30 Python
python gensim使用word2vec词向量处理中文语料的方法
Jul 05 Python
在python 中split()使用多符号分割的例子
Jul 15 Python
python实现连连看游戏
Feb 14 Python
Python入门基础之数字字符串与列表
Feb 01 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读取数据库信息的几种方法
2008/05/24 PHP
phpMyAdmin链接MySql错误 个人解决方案
2009/12/28 PHP
php的zip解压缩类pclzip使用示例
2014/03/14 PHP
老版本PHP转义Json里的特殊字符的函数
2015/06/08 PHP
试用php中oci8扩展
2015/06/18 PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
2016/12/10 PHP
PHP常用的三种设计模式
2017/02/17 PHP
PHP房贷计算器实例代码,等额本息,等额本金
2017/04/01 PHP
Javascript的IE和Firefox兼容性汇编(zz)
2007/02/02 Javascript
修改好的jquery滚动字幕效果实现代码
2011/06/22 Javascript
Js+Flash实现访问剪切板操作
2012/11/20 Javascript
JavaScript版TAB选项卡效果实例
2013/08/16 Javascript
给事件响应函数传参数的四种方式小结
2013/12/05 Javascript
基于javascript实现窗口抖动效果
2016/01/03 Javascript
JavaScript实现的CRC32函数示例
2016/11/23 Javascript
基于jQuery实现弹幕APP
2017/02/10 Javascript
简单实现jQuery上传图片显示预览功能
2020/06/29 jQuery
Fetch超时设置与终止请求详解
2019/05/18 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
JavaScript组合模式---引入案例分析
2020/05/23 Javascript
Python对象转JSON字符串的方法
2016/04/27 Python
selenium+python实现自动化登录的方法
2018/09/04 Python
Django学习笔记之为Model添加Action
2019/04/30 Python
django使用django-apscheduler 实现定时任务的例子
2019/07/20 Python
opencv python如何实现图像二值化
2020/02/03 Python
pymysql模块使用简介与示例
2020/11/17 Python
Python Selenium库的基本使用教程
2021/01/04 Python
介绍一下Linux中的链接
2016/06/05 面试题
应届生会计电算化求职信
2013/10/03 职场文书
网络教育自我鉴定
2014/02/04 职场文书
趣味活动策划方案
2014/02/08 职场文书
促销活动总结
2014/04/28 职场文书
中学生综合素质自我评价
2015/03/06 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
运动会运动员赞词
2015/07/22 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书