Author:吾爱北方的母老虎

原创链接:https://blog.csdn.net/weixin_41010198/article/details/80261037

TensorFlow的运行方式分为四步

  • 加载数据及定义超参数
  • 构建网络
  • 训练模型
  • 评估模型和进行预测

下面以一个一元二次方程为例构建一个神经网络模型

y = ax**2+b

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

1.生成及加载数据

# 构建满足一元二次方程的函数# 为了使点更密集一些,我们构建了300个点,分布在-1到1区间,直接采用np生成等差数列的方法,并将结果为300个点的
# 一维数组,转换为300x1的二维数组
x_data = np.linspace(-1,1,300)[:,np.newaxis]
print(x_data[0:5])
print(np.shape(x_data))# 我自己定义一个行的数据
# ax = range(300)
x_data[0:5,:]   # 取出的是前5行,和所有的列的数据# 没有实现数据绘制
plt.scatter(ax,x_data)  # 就是单个的点,没有必要进行可视化了,可以利用索引的位置作为其的横坐标
plt.show()
n = 1024
x = np.random.normal(0,1,n)
print(x)
y = np.random.normal(0,1,n)
plt.scatter(x,y,color="r")
plt.show()
# 给数据中加入一些噪声点   加入噪声点到值的范围是0~0.05   拟合成均值为0,方差为0.05的正态分布
print(x_data.shape)
noise = np.random.normal(0,0.05,x_data.shape)
print(noise)   # 打印出来的数很小,是以科学计数法的形式进行打印的
y_data = np.square(x_data) - 0.5 + noise   # y = x^2-0.5+噪声

tf.placeholder(dtype, shape=None, name=None)

此函数可以理解为形参,用于定义过程,在执行的时候再赋具体的值

参数:

dtype:数据类型。常用的是tf.float32,tf.float64等数值类型 shape:数据形状。默认是None,就是一维值,也可以是多维,比如[2,3], [None, 3]表示列是3,行不定 name:名称。

2.构建网络模型

# 定义的网络模型有一个隐藏层和一个输出层  其中定义了四个参数:
# 分别是:输入数据、输入数据的维度、输出数据的维度、激活函数def add_layer(inputs,in_size,out_size,activation_function=None):# 构建权重  :in_size x out_size  大小的举证weights = tf.Variable(tf.random_normal([in_size,out_size]))# 构建偏置矩阵bias = tf.Variable(tf.zeros([1,out_size]) + 0.1)# 矩阵相乘Wx_plus_b = tf.matmul(inputs,weights) + biasif activation_function is None:outputs = Wx_plus_belse:outputs = activation_function(Wx_plus_b)return outputs  # 得到输出数据# 构建隐藏层,假设隐藏层有20个神经元h1 = add_layer(xs,1,20,activation_function=tf.nn.relu)#  构建输出层,假设输出层和输入层一样,有1个神经元
prediction = add_layer(h1,20,1,activation_function=None)
# 计算预测值和真实值之间的误差loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)   # 梯度下降,求损失的最小值# 梯度下降更新参数,然后进训练1000次后,看最后的损失会下降到多少

3.训练模型

# 让TensorFlow训练1000次,每50次输出训练的损失值init = tf.global_variables_initializer()  # 初始化所有的变量
sess = tf.Session()
sess.run(init)import timefig = plt.figure()# 生成图片框
ax = fig.add_subplot(1,1,1)# 图片框分割成一块,编号为111init_time=time.time()
loss_list=[]
for i in range(10000):sess.run(train_step,feed_dict={xs:x_data,ys:y_data})if i%500 == 0:      #  没隔50次打印一次损失值print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))loss_list.append(loss)print(type(loss_list))
print(loss_list)loss_list=np.array(loss_list)
print(type(loss_list))# 没有画出来ax.plot(np.array(range(20)), loss_list, 'r-', lw=5)
print("training time is: ",time.time()-init_time,"s")

# 之后补充损失函数的可视化

#=== plot真是数据
fig = plt.figure()# 生成图片框
ax = fig.add_subplot(1,1,1)# 图片框分割成一块,编号为111
ax.scatter(x_data, y_data)# 以点的形式显示出真实数据
#plt.ion()# 连续的打印
plt.title("函数 y=x^2+b的图像")
plt.show()# 输出图片

DL-1 用一元二次方程 y=x^2+b 构建神经网络相关推荐

  1. js条件语句,用if...else if....else方程ax2+bx+c=0一元二次方程。求根

    if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码 if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码 if...else if... ...

  2. 10的多少次方 oracle_初中数学:关于一元二次方程的中考经典例题,千万别错过!...

    教育的干货与温度 我们倾力奉献 一元二次方程的应用题在初中代数里是个非常重要的知识点. 它不仅考查学生对于列方程解实际问题的能力,还考查了学生对于一元二次方程的计算. 也就是说你得能根据实际问题能列出 ...

  3. c++中计算2得n次方_《一元二次方程》单元试卷,从中总结出5个考点,初三学生应知道...

    俗话说:"工欲善其事, 必先利其器. " 学好一元二次方程必须熟练掌握它的重要考点,再通过有针对性地做练习,提高解题能力. 为了帮助大家切身感受一元二次方程这章的重要考点,下面将为 ...

  4. c语言程序算一元二次方程,如何用C语言来计算一元二次方程

    C语言实现一元二次方程的解 源程序 #include #include float x1,x2,p,q,d; float great_than_zero(float,float); float equ ...

  5. java2的7次方怎么表示_一元二次方程常见题型之方程根的解法

    一元二次方程在整个数学的学习中是十分重要的,在初中来说它的地位更是高,不仅在中考数学中占有很大的比例,还在实际中也有很广泛的运用.其中,方程根的解法更是一元二次方程的重中之重,下面就给大家分析一下一元 ...

  6. 一元二次方程abc决定什么_专题—二次函数一元二次方程-abc意义.pptx

    专题-二次函数一元二次方程-abc意义 二次函数与一元二次方程a,b,c的符号意义;对于二次函数y=ax2+bx+c(a≠0):1.求与y轴交点坐标,令 ,得 所以与y轴交点坐标 : 若交于原点,则 ...

  7. python从原始代码(matplotlib)到加图形界面(tkinter),最后到制作软件(一元二次方程软件)(如何做一个python软件)

    一.基本介绍 1.使用的python开发工具是Anaconda中的Spyder 这个工具比较好用,安装步骤直接百度即可. 2.原始代码用到了几个库,用到了matplotlib库等,百度添加相应的库即可 ...

  8. 利用C++求解一元二次方程

    题目:求解一元二次方程:ax²+bx+c=0 的解,其中a=1,b=-3,c=2. 分析:大家都知道一元二次方程的解有三种情况,即考虑Δ=(b²-4ac)的算术平方根,当Δ>0时,方程有两个不相 ...

  9. C语言:解一元二次方程

    C语言实验题――一元二次方程 描述 解一元二次方程ax2+bx+c=0的解. 输入 输入三个实数a,b,c的值,且a不等于0. 输出 输出两个根X1和X2,用空格隔开,具体格式为: X1 X2 其中大 ...

最新文章

  1. 【Git】git clone时下载速度太慢的解决方法(亲测有效)
  2. 浅析网站设计风格对网站建设的重要性
  3. 学习笔记Hadoop(十五)—— MapReduce编程进阶
  4. python(16)-列表list,for循环
  5. XAMPP 无法启动解决
  6. 怎么查看kudu的版本_apache版本kudu kudu-impala安装方法
  7. java打印等腰梯形
  8. hybrid7 宝马active_【图】宝马ActiveHybrid7系 动力节能完美结合_汽车之家
  9. 小女出世,暂停工作,全职照料大人小孩
  10. Windows 下 PHP 开发环境配置系列二(使用 MODx CMS)
  11. VJC案例-风扇定时
  12. Vue3.0 项目创建
  13. 学习马士兵Java教程
  14. 新颖的基于物联网毕业设计题目50例
  15. 《华为工作法》6 华为的成功不是一个人的
  16. Windows Server 2003 计划任务创建说明
  17. 出口美国的电动自行车UL2849测试和GCC检测标准
  18. GDT,LDT,GDTR,LDTR 详解
  19. 网站实时监控系统的设计与实现
  20. selenium滑动验证

热门文章

  1. OpenCV——RGB三通道分离
  2. Sql2000命名中的’_’好象会引发问题
  3. java rotatetransition_transition过渡,transform变换
  4. python绘制灰度图片直方图-opencv+python 统计及绘制直方图
  5. python基础代码库-CNN详解-基于python基础库实现的简单CNN
  6. python turtle画熊-基于turtle的Python作画
  7. python爬虫案例-Python爬虫案例集合
  8. python php linux-怎么在linux上运行python
  9. python简单编程例子-中文方便就用中文编程!Python图形界面开发实例
  10. python编程if语法-Python中的if语句——参考Python编程从入门到实践