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,多层:使用多层权重,例如多层全连接方式 以下定义了三个隐藏层的全连接方式的神经网络样例 ...
随机推荐
- Vue 通过 Lodash 限制操作频率
<template> <div id="watch-example"> <p> Ask a yes/no question: <input ...
- mysql命令行各个参数解释
mysql命令行各个参数解释 http://blog.51yip.com/mysql/1056.html Usage: mysql [OPTIONS] [database] //命令方式 -?, ...
- Windows server 2016 支持容器 ,安装docker 搭建Ubuntu+hadoop (docker为服务器)
一.Windows server 2016 是肯定要安装的, 关于如何启动容器功能那就是控制面板中增加与删除里面的启用了,很多地方可以百度到 二. 安装Ubuntu hadoop 等 待续 注意: ...
- zha男/女的三种境界
本文为chedan贴,谈一谈找对象时渣男/女的三种表现,分别对应三种境界,涉世未深的男生女生可加以小心,自身属于zha类型的可略过本文. 另,本文的恋爱观基于两个原则.一是对象应是从朋友到恋人的 ...
- GIT中常用的命令
最近项目中使用到了GIT,所以记录一下GIT中常用的命令. GIT使用的客户端有Git Bash:http://code.google.com/p/msysgit/ 还有乌龟TortoiseGit:h ...
- 使用Python监控Linux系统
一.Python编写的监控工具 一.多功能系统资源统计工具dstat 1.dstat介绍 dstat是一个用Python语言实现的多功能系统资源统计工具,用来取代Linux下的vmstat.iosta ...
- 2018-2019-1 20189221《Linux内核原理与分析》第二周作业
读书报告 <庖丁解牛Linux内核分析> 第 1 章 计算工作原理 1.1 存储程序计算机工作模型 1.2 x86-32汇编基础 1.3汇编一个简单的C语言程序并分析其汇编指令执行过程 因 ...
- git cherry-pick 报错is a merge but no -m option was given
gerrit上提示代码冲突的时候,我们首先会想到rebase下,不行的话就只能解决冲突了,最简单的做法是我的另一篇博客https://www.cnblogs.com/zndxall/p/9140813 ...
- TortoiseGit推送代码到Gerrit的过程
gerrit的安装不在本博客的说明范围中,本博客阐述的是使用TortoiseGit 提交代码到gerrit上的步骤和配置. 一.Git 说明:这个工具只要用来做一个仿真的linux环境,可以执行大部分 ...
- Adobe Acrobat 9 Pro序列号
其实只删除c:\Program Files\Common Files\Adobe\Adobe PCD\cache目录下的cache.db文件也是可以的,然后重新打开Adobe ,输入序列号1118-4 ...