tensorflow学习2-线性拟合和神经网路拟合
线性拟合的思路:
线性拟合代码:
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
#%%图形绘制
def data_show(x,y,w,b):
plt.figure()
plt.scatter(x,y,marker='.')
plt.scatter(x,(w*x+b),marker='.')
plt.show()
#%%生成数据
x_data=np.random.rand(100).astype(np.float32)
y_data=0.1*x_data + 0.3
#%%创建结构
Weights=tf.Variable(tf.random_uniform([1],-1.0,1.0))#平均分布的随机数
biases=tf.Variable(tf.zeros([1]))
y=Weights*x_data+biases
loss=tf.reduce_mean(tf.square(y-y_data)) #损失函数,reduce_mean:计算一个张量的各维度的元素的均值
optimizer=tf.train.GradientDescentOptimizer(0.5)#优化器 学习率选择#.GradientDescentOptimizer()实现梯度下降算法的优化器。
train=optimizer.minimize(loss)#优化器优化目标选择,使loss 最小
init=tf.global_variables_initializer() #初始化全变量节点
#%%
###训练部分
with tf.Session() as sess:
sess.run(init)
for i in range(200):
sess.run(train)
if i %20==0:
print(i,sess.run(Weights),sess.run(biases))
data_show(x_data,y_data,sess.run(Weights),sess.run(biases))
#%%
writer=tf.summary.FileWriter("/path/to/logs",tf.get_default_graph())
writer.close()
神经网络拟合二次函数(带噪声)
代码:
import tensorflow as tf
import numpy as np
#%%
def add_layer(input,in_size,out_size,activation_function=None):
Weights=tf.Variable(tf.random_normal([in_size,out_size]))
#tf.random.uniform()均匀分布,tf.random.normal() 正太分布
biases=tf.Variable(tf.zeros([1,out_size])+0.1)#biases 的维度是1行,Weights的列
#输入是1*input,Weights是input*output,output是1*output,所以biases是1*output
wx_plus_b=tf.matmul(input,Weights)+biases
if activation_function==None:
output=wx_plus_b
else:#加入激活函数
output= activation_function(wx_plus_b)
return output#返回output
#%%
x_data= np.linspace(-1,1,300)[:,np.newaxis] #np.linspace(),-1到1进行300等分的数组得到1*300,再进行变换为300*1
noise=np.random.normal(0,0.05,x_data.shape)
y_data=np.square(x_data)-0.5+noise
#%%
#占位符,feed_dict={}进行赋值
xs=tf.placeholder(tf.float32,[None,1])
ys=tf.placeholder(tf.float32,[None,1])
ll=add_layer(xs,1,10,activation_function=tf.nn.relu)#激活函数是relu
prediction=add_layer(ll,10,1,activation_function=None)
reduce_sum=tf.reduce_sum(tf.square(ys-prediction),reduction_indices=1)
loss=tf.reduce_mean(reduce_sum)
#tf.reduce_sum:计算一个张量的各个维度的元素之和。
#tf.reduce_mean():取平均值。
train_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss)
init=tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
for i in range(1000):
sess.run(train_step,feed_dict={xs:x_data,ys:y_data})
#if i % 50 ==0:
# print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))
if i==999:
print(sess.run(tf.square(ys - prediction),feed_dict={xs:x_data,ys:y_data}))
#输出的是300行1列 [300,1]
#[[ 4.99251783e-02]
#[ 1.65489316e-02]
# ..........
#[ 3.05732153e-02]]
#经过,tf.reduce_sum(,reduction_indices=1)后为了:
if i==999:
print(sess.run(tf.reduce_sum(tf.square(ys-prediction),reduction_indices=1), feed_dict={xs: x_data, ys: y_data}))
#输出的是1行300列[300]------>[1,2,3,.....]就叫做[300],共计300个元素
#[ 3.73238046e-03 ..... 1.45917088e-02]
补充知识 :
1.tf.random.uniform() 符合均匀分布--------tf.random.normal() 符合正太分布
2.np.newaxis补充知识 :
import numpy as np
a=np.array([1,2,3,4,5])#creat a array
b=a[:,np.newaxis]
#a---->[1,2,3,4,5]
#b---->[[1],[2],[3],[4],[5]] 5行1列 (5,1)
c=a[np.newaxis,:]
#c---->[[1,2,3,4,5]] 1行5列 (1,5)
3.特别注意:reduction_indices=[1]可知是指定操作坐标轴的函数,即把[300,1]按行求和后拼接为新的数组,也就是[300]的尺寸
tensorflow学习2-线性拟合和神经网路拟合的更多相关文章
- tensorflow学习之路-----简单卷积神经网路
import tensorflow as tf#取数据,目的是辨别数字from tensorflow.examples.tutorials.mnist import input_data'''手动添加 ...
- Tensorflow学习:(三)神经网络优化
一.完善常用概念和细节 1.神经元模型: 之前的神经元结构都采用线上的权重w直接乘以输入数据x,用数学表达式即,但这样的结构不够完善. 完善的结构需要加上偏置,并加上激励函数.用数学公式表示为:.其中 ...
- Tensorflow学习教程------过拟合
Tensorflow学习教程------过拟合 回归:过拟合情况 / 分类过拟合 防止过拟合的方法有三种: 1 增加数据集 2 添加正则项 3 Dropout,意思就是训练的时候隐层神经元每次随机 ...
- tensorflow学习笔记——自编码器及多层感知器
1,自编码器简介 传统机器学习任务很大程度上依赖于好的特征工程,比如对数值型,日期时间型,种类型等特征的提取.特征工程往往是非常耗时耗力的,在图像,语音和视频中提取到有效的特征就更难了,工程师必须在这 ...
- tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)
续集请点击我:tensorflow学习笔记——使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...
- TensorFlow 学习(6)———TensorFlow运作方式
本部分主要涉及到TensorFlow的运作方式和主要操作 所需的代码在https://github.com/tensorflow/tensorflow/tree/master/tensorflow/e ...
- Tensorflow学习笔记No.4.1
使用CNN卷积神经网络(1) 简单介绍CNN卷积神经网络的概念和原理. 已经了解的小伙伴可以跳转到Tensorflow学习笔记No.4.2学习如和用Tensorflow实现简单的卷积神经网络. 1.C ...
- 深度学习-tensorflow学习笔记(2)-MNIST手写字体识别
深度学习-tensorflow学习笔记(2)-MNIST手写字体识别超级详细版 这是tf入门的第一个例子.minst应该是内置的数据集. 前置知识在学习笔记(1)里面讲过了 这里直接上代码 # -*- ...
- tensorflow学习笔记——使用TensorFlow操作MNIST数据(2)
tensorflow学习笔记——使用TensorFlow操作MNIST数据(1) 一:神经网络知识点整理 1.1,多层:使用多层权重,例如多层全连接方式 以下定义了三个隐藏层的全连接方式的神经网络样例 ...
随机推荐
- Echart绘制趋势图和柱状图总结
1.legend名字与series名字一样,即可联动,且不可手动去掉联动效果 2.通过legend图例联动,隐藏绘制图线后,对应( yAxisIndex: 1)坐标y轴如果没有同时设置min和max的 ...
- [django]drf知识点梳理-分页
msyql分页 limit offset https://www.cnblogs.com/iiiiiher/articles/8846194.html django自己实现分页 https://www ...
- 如何创建线程第二种实现Runnable接口
package TestException; public class test5 { public static void main(String[] args) { Test6 s1 = new ...
- PHP实现装饰器
参考:https://www.cnblogs.com/onephp/p/6108940.html ●装饰器模式(Decorator),可以动态地添加修改类的功能 ●一个类提供了一项功能,如果要在修改并 ...
- Spring MVC 简介及入门小例子
说明:文章内容全部截选自实验楼教程[Spring MVC 简易教程] 一.什么是 Spring MVC Spring MVC 属于 SpringFrameWork 的后续产品,已经融合在 Spring ...
- 10 Free Image Hosting Sites for Your Photos
https://www.lifewire.com/free-image-hosting-sites-3486329 Wondering if there are there any good site ...
- Mybatis select、insert、update、delete 增删改查操作
MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架. MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索.MyBatis 可以使用简单的XML ...
- python shutil.copytree 解决目标目录存在的情况
直接修改copytree的实现即可,如下: #copytree中找到 os.makedirs(dst),加入判断,就这么简单 if not os.path.exists(dst): os.makedi ...
- Selenium基本使用(十三)测试中常见问题
我们在使用selenium测试过程中,经常会遇到这样的问题: 1.frame或iframe <iframe id='frame1' name='frame1'> <input typ ...
- HTTP请求解析过程 (简单概括)
1.域名解析 用户输入网址,由域名系统DNS解析输入的网址: 2.TCP的3次握手 通过域名解析出的IP地址来向web服务器发起TCP连接请求,如果3次握手通过,则与web服务端建立了可靠的连接: 3 ...