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,多层:使用多层权重,例如多层全连接方式 以下定义了三个隐藏层的全连接方式的神经网络样例 ...
随机推荐
- QPS、PV 、RT(响应时间)之间的关系
QPS.PV .RT(响应时间)之间的关系 在进行系统性能压测和系统性能优化的时候,会涉及到QPS,PV,RT相关的概念,本文总结一下QPS,PV,RT之间的关系,放在博客备忘,本文参考了之前在淘宝工 ...
- MySQL 5.6 Index Condition Pushdown
ICP(index condition pushdown)是mysql利用索引(二级索引)元组和筛字段在索引中的where条件从表中提取数据记录的一种优化操作.ICP的思想是:存储引擎在访问索引的时候 ...
- ITouch在xcode下提示‘No such file or directory, at ‘/SourceCache/DVTi...'
版权声明:本文为博主原创文章,转载或又一次发表请先与我联系. https://blog.csdn.net/jonahzheng/article/details/37692733 用一个台老 ...
- bat处理打开关闭exe
@echo off rem rem 注释 tastkill /f /im a.exe cd %CD% %CD:~0,1%: cd %Cd%b start %CD%a.exe cd .. %CD:~0 ...
- what's the python之if判断、while循环以及for循环
Python缩进原则 顶级代码必须顶行写,即如果一行代码本身不依赖于任何条件,那它必须不能进行任何缩进 同一级别的代码,缩进必须一致 官方建议缩进用4个空格 Python程序语言指定任何非0和非空的布 ...
- Python3学习之路~8.2 socket简单实例 实现ssh 发送大量数据
实例1: 利用socket模拟客户端和服务器端各自收发一次数据: #Author:Zheng Na # 客户端 import socket # 声明socket类型,同时生成socket连接对象 cl ...
- mysql 解锁
show OPEN TABLES where In_use > 0;show processlist;show status like 'Table%';show status like '%l ...
- python的目录
1.python的当前目录 d = os.path.dirname(__file__) #和文件强依赖,即使该语句被别的文件调用,d也不会改变或者d = os.getcwd() #当该语句被别的文件调 ...
- delete 删除对象属性
删除属性要直接删.
- Generator yield语法和 co模块
Generator yield 语法使用,也叫生成器,实际上就是多个异步按顺序执行 1.下面是一个读取两个文件的例子 const fs = require('fs'); const readFile ...