用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 list语法学习(带例子)
Nov 01 Python
Python正则抓取新闻标题和链接的方法示例
Apr 24 Python
Python中类的初始化特殊方法
Dec 01 Python
python并发编程之线程实例解析
Dec 27 Python
python OpenCV学习笔记实现二维直方图
Feb 08 Python
Python requests库用法实例详解
Aug 14 Python
Python数据类型之Dict字典实例详解
May 07 Python
python解析yaml文件过程详解
Aug 30 Python
Python绘图实现显示中文
Dec 04 Python
python环境搭建和pycharm的安装配置及汉化详细教程(零基础小白版)
Aug 19 Python
PyQt5实现多张图片显示并滚动
Jun 11 Python
Python OpenCV实现图像模板匹配详解
Apr 07 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和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
2011/07/03 PHP
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
PHP将HTML转换成文本的实现代码
2015/01/21 PHP
PHP获取文件夹大小函数用法实例
2015/07/01 PHP
phpStudy访问速度慢和启动失败的解决办法
2015/11/19 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
JavaScript 对象链式操作测试代码
2010/04/25 Javascript
javascript 运算数的求值顺序
2011/08/23 Javascript
为JavaScript类型增加方法的实现代码(增加功能)
2011/12/29 Javascript
html组件不可输入(只读)同时任何组件都有效
2013/04/01 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
JavaScript 七大技巧(一)
2015/12/13 Javascript
纯js实现手风琴效果代码
2020/04/17 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
2016/12/23 Javascript
原生javascript实现图片放大镜效果
2017/01/18 Javascript
Angular2库初探
2017/03/01 Javascript
webpack实用小功能介绍
2018/01/02 Javascript
Vue press 支持图片放大功能的实例代码
2018/11/09 Javascript
vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题
2020/07/31 Javascript
javascript实现左右缓动动画函数
2020/11/25 Javascript
win7安装python生成随机数代码分享
2013/12/27 Python
记录Django开发心得
2014/07/16 Python
python解决汉字编码问题:Unicode Decode Error
2017/01/19 Python
Django日志模块logging的配置详解
2017/02/14 Python
Python+request+unittest实现接口测试框架集成实例
2018/03/16 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
Python如何设置指定窗口为前台活动窗口
2020/08/12 Python
Darphin迪梵官网: 来自巴黎,植物和精油调制的护肤品牌
2016/10/11 全球购物
会计电算一体化个人简历的自我评价
2013/10/15 职场文书
应届生保险求职信
2013/11/11 职场文书
退伍老兵事迹材料
2014/01/31 职场文书
学校搬迁方案
2014/06/15 职场文书
2015年清明节演讲稿范文
2015/03/17 职场文书
中小企业员工手册范本
2015/05/14 职场文书
叶问观后感
2015/06/15 职场文书
PHP解决高并发问题
2021/04/01 PHP