# -*- coding: utf-8 -*-
"""
Created on Mon Oct 15 17:38:39 2018 @author: zhen
""" import tensorflow as tf
import numpy as np
from sklearn.datasets import fetch_california_housing
from sklearn.preprocessing import StandardScaler n_epochs = 10000
learning_rate = 0.01 housing = fetch_california_housing(data_home="C:/Users/zhen/.spyder-py3/data", download_if_missing=True)
m, n = housing.data.shape
housing_data_plus_bias = np.c_[np.ones((m, 1)), housing.data]
# 归一化
scaler= StandardScaler().fit(housing_data_plus_bias)
scaled_housing_data_plus_bias = scaler.transform(housing_data_plus_bias)
# 创建常量
x = tf.constant(scaled_housing_data_plus_bias, dtype=tf.float32, name='x')
y = tf.constant(housing.target.reshape(-1, 1), dtype=tf.float32, name='y')
# 创建随机数
theta = tf.Variable(tf.random_uniform([n + 1, 1], -1.0, 1.0), name='theta')
# 矩阵乘
y_pred = tf.matmul(x, theta, name="predictions") error = y_pred - y
# 求平均值
mse = tf.reduce_mean(tf.square(error), name="mse")
"""
# 求梯度
gradients = tf.gradients(mse, [theta])[0]
# 赋值
training_op = tf.assign(theta, theta - learning_rate * gradients)
"""
# 梯度下降
optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate)
training_op = optimizer.minimize(mse) init = tf.global_variables_initializer() with tf.Session() as sess:
sess.run(init) for epoch in range(n_epochs):
if epoch % 100 == 0:
print("Epoch", epoch, "MSE = ", mse.eval())
sess.run(training_op) best_theta = theta.eval()
print(best_theta)

结果:

Epoch 0 MSE =  9.128207
Epoch 100 MSE = 4.893214
Epoch 200 MSE = 4.8329406
Epoch 300 MSE = 4.824335
Epoch 400 MSE = 4.8187895
Epoch 500 MSE = 4.814753
Epoch 600 MSE = 4.811796
Epoch 700 MSE = 4.8096204
Epoch 800 MSE = 4.808017
Epoch 900 MSE = 4.806835
Epoch 1000 MSE = 4.805955
Epoch 1100 MSE = 4.805301
Epoch 1200 MSE = 4.8048124
Epoch 1300 MSE = 4.804449
Epoch 1400 MSE = 4.804172
Epoch 1500 MSE = 4.803962
Epoch 1600 MSE = 4.8038034
Epoch 1700 MSE = 4.803686
Epoch 1800 MSE = 4.8035927
Epoch 1900 MSE = 4.80352
Epoch 2000 MSE = 4.8034678
Epoch 2100 MSE = 4.803425
Epoch 2200 MSE = 4.8033857
Epoch 2300 MSE = 4.803362
Epoch 2400 MSE = 4.803341
Epoch 2500 MSE = 4.8033247
Epoch 2600 MSE = 4.80331
Epoch 2700 MSE = 4.8033013
Epoch 2800 MSE = 4.8032923
Epoch 2900 MSE = 4.8032856
Epoch 3000 MSE = 4.8032804
Epoch 3100 MSE = 4.803273
Epoch 3200 MSE = 4.803271
Epoch 3300 MSE = 4.8032694
Epoch 3400 MSE = 4.803267
Epoch 3500 MSE = 4.8032637
Epoch 3600 MSE = 4.8032603
Epoch 3700 MSE = 4.803259
Epoch 3800 MSE = 4.803259
Epoch 3900 MSE = 4.8032584
Epoch 4000 MSE = 4.8032575
Epoch 4100 MSE = 4.8032575
Epoch 4200 MSE = 4.803256
Epoch 4300 MSE = 4.803255
Epoch 4400 MSE = 4.803256
Epoch 4500 MSE = 4.803256
Epoch 4600 MSE = 4.803253
Epoch 4700 MSE = 4.8032565
Epoch 4800 MSE = 4.803258
Epoch 4900 MSE = 4.8032556
Epoch 5000 MSE = 4.803256
Epoch 5100 MSE = 4.8032537
Epoch 5200 MSE = 4.8032565
Epoch 5300 MSE = 4.803255
Epoch 5400 MSE = 4.8032546
Epoch 5500 MSE = 4.803254
Epoch 5600 MSE = 4.8032537
Epoch 5700 MSE = 4.8032517
Epoch 5800 MSE = 4.8032527
Epoch 5900 MSE = 4.8032537
Epoch 6000 MSE = 4.803254
Epoch 6100 MSE = 4.8032546
Epoch 6200 MSE = 4.803255
Epoch 6300 MSE = 4.8032546
Epoch 6400 MSE = 4.803253
Epoch 6500 MSE = 4.803253
Epoch 6600 MSE = 4.803253
Epoch 6700 MSE = 4.8032517
Epoch 6800 MSE = 4.803252
Epoch 6900 MSE = 4.8032517
Epoch 7000 MSE = 4.803252
Epoch 7100 MSE = 4.8032537
Epoch 7200 MSE = 4.8032537
Epoch 7300 MSE = 4.803253
Epoch 7400 MSE = 4.803253
Epoch 7500 MSE = 4.803253
Epoch 7600 MSE = 4.803254
Epoch 7700 MSE = 4.8032546
Epoch 7800 MSE = 4.8032556
Epoch 7900 MSE = 4.803256
Epoch 8000 MSE = 4.8032565
Epoch 8100 MSE = 4.8032565
Epoch 8200 MSE = 4.8032565
Epoch 8300 MSE = 4.8032556
Epoch 8400 MSE = 4.8032565
Epoch 8500 MSE = 4.8032575
Epoch 8600 MSE = 4.8032565
Epoch 8700 MSE = 4.803256
Epoch 8800 MSE = 4.803256
Epoch 8900 MSE = 4.8032556
Epoch 9000 MSE = 4.803255
Epoch 9100 MSE = 4.8032546
Epoch 9200 MSE = 4.803254
Epoch 9300 MSE = 4.8032546
Epoch 9400 MSE = 4.8032546
Epoch 9500 MSE = 4.803255
Epoch 9600 MSE = 4.803255
Epoch 9700 MSE = 4.803255
Epoch 9800 MSE = 4.803255
Epoch 9900 MSE = 4.803255
[[ 0.43350863]
[ 0.8296331 ]
[ 0.11875448]
[-0.26555073]
[ 0.3057157 ]
[-0.00450223]
[-0.03932685]
[-0.8998542 ]
[-0.87051094]]

结果样例:

TensorFlow实现梯度下降的更多相关文章

  1. Tensorflow梯度下降应用

    import tensorflow as tfimport numpy as np #使用numpy生成随机点x_data = np.random.rand(100)y_data = x_data*0 ...

  2. Python之TensorFlow的变量收集、自定义命令参数、矩阵运算、梯度下降-4

    一.TensorFlow为什么要存在变量收集的过程,主要目的就是把训练过程中的数据,比如loss.权重.偏置等数据通过图形展示的方式呈现在开发者的眼前. 自定义参数:自定义参数,主要是通过Python ...

  3. Tensorflow细节-P84-梯度下降与批量梯度下降

    1.批量梯度下降 批量梯度下降法是最原始的形式,它是指在每一次迭代时使用所有样本来进行梯度的更新.从数学上理解如下: 对应的目标函数(代价函数)即为: (1)对目标函数求偏导: (2)每次迭代对参数进 ...

  4. 采用梯度下降优化器(Gradient Descent optimizer)结合禁忌搜索(Tabu Search)求解矩阵的全部特征值和特征向量

    [前言] 对于矩阵(Matrix)的特征值(Eigens)求解,采用数值分析(Number Analysis)的方法有一些,我熟知的是针对实对称矩阵(Real Symmetric Matrix)的特征 ...

  5. 『TensorFlow』梯度优化相关

    tf.trainable_variables可以得到整个模型中所有trainable=True的Variable,也是自由处理梯度的基础 基础梯度操作方法: tf.gradients 用来计算导数.该 ...

  6. 梯度下降与pytorch

    记得在tensorflow的入门里,介绍梯度下降算法的有效性时使用的例子求一个二次曲线的最小值. 这里使用pytorch复现如下: 1.手动计算导数,按照梯度下降计算 import torch #使用 ...

  7. TensorFlow的梯度裁剪

    在较深的网络,如多层CNN或者非常长的RNN,由于求导的链式法则,有可能会出现梯度消失(Gradient Vanishing)或梯度爆炸(Gradient Exploding )的问题. 原理 问题: ...

  8. 深度学习必备:随机梯度下降(SGD)优化算法及可视化

    补充在前:实际上在我使用LSTM为流量基线建模时候,发现有效的激活函数是elu.relu.linear.prelu.leaky_relu.softplus,对应的梯度算法是adam.mom.rmspr ...

  9. 使用多个梯度下降的方式进行测试,同时使用ops.apply_gradient进行梯度的下降

    1. ops = tf.train.GradientDescentOptimizer(learning_rate) 构建优化器 参数说明:learning_rate 表示输入的学习率 2.ops.co ...

随机推荐

  1. vue moment库格式化处理后端传的日期

    开篇 日期时间格式前端和后端都可以处理,我比较推荐前端来处理(定制化高),下面我就介绍下两种处理的方式 后端处理 django默认不经处理传给前端的日期格式为2018-08-26T19:53:36.5 ...

  2. Jmeter参数化的方法

    测试接口时,使用Jmeter在请求中输入参数,若是有多种情况,有多条测试参数,是不是要每个情况逐条输入呢?逐条输入会让人觉得比较麻烦,因此,就有了Jmeter参数化. Jmeter参数化的方法: 用户 ...

  3. django model数据 时间格式

    from datetime import datetime dt = datetime.now() print '时间:(%Y-%m-%d %H:%M:%S %f): ' , dt.strftime( ...

  4. hadoop运行一段时间后无法stop-all的问题

    默认配置是将datanode,namenode,jobtracker,tasktracker,secondarynamenode的pid存放在/tmp目录下, 随着linux的定期清理, 这些pid就 ...

  5. postgres 更新数据表

    新增非空列: alter table t_test add column user_id integer; update t_test set user_id=0; alter table t_tes ...

  6. docker 安全

    由于容器运行在主机上,且与主机共用一套内核,因此在容器的安全使用上会涉及到容器本身以及主机的安全加固,如针对系统调用,系统资源,远程访问等都需要进行安全方面的考量. docker官网给出了简单的一些建 ...

  7. github总结(1)--怎样创建一个新的仓库

    第一步:登录账号,进入github,创建一个新的空仓库 第二步:打开电脑上已经安装好的git-bash,切换至项目所在本地目录 第三步:创建本地仓库及提交文件到本地仓库(用windows命令行或者gi ...

  8. 【jQuery源码】整体架构

    jQuery源码可以精简为以下内容: 方框上面的代码根据Jq注释我们可以知道是对AMD规范的支持. jQuery整体上被包裹在一个匿名函数中,这个匿名函数再作为另一个匿名函数的参数被传入,形参fact ...

  9. Scala函数与函数式编程

    函数是scala的重要组成部分, 本文将探讨scala中函数的应用. scala作为支持函数式编程的语言, scala可以将函数作为对象即所谓"函数是一等公民". 函数定义 sca ...

  10. 再会,OI

    现在时间是一八年的七月二十一日下午,NOI2018 闭幕式已经结束.嗯,结束了... 谢绝了李总的好意也没有让父母来接,有段路还是要自己一个人走的... 总结一下 NOI ...其实也没有什么好总结的 ...