tensorflow3 非线性回归、mnist、简单神经网络

mnist数据集

  • 手写数字的数据集。
  • 60000行训练数据集,10000行测试数据集
  • 下载地址:http://yann.lecun.com/exdb/mnist/index.html

在这里插入图片描述

  • mnist数据集是形状为[60000,784]的张量,60000张图片,每个图片有784个像素点,这些个像素点可以分为如图的矩阵。

在这里插入图片描述

图中是5041的图

  • 标签格式

在这里插入图片描述

如图是5041的标签

神经网络构建

  • 输入层784(28*28),输出层10
  • 即是分成10类。
  • 这是简单的结构,如果加上中间层效果会好一点。

在这里插入图片描述

sofmax

在这里插入图片描述

 e=2.718
 所以e的一次方等于2.718。exp(1)=2.718。
 也就是说输出为1,就是x1=1

  • 输出结果为[1,5,3]是什么意思?
     意思为:标签为0的得分为1,标签为1的得分为5,标签为3的得分为3
     输出写全了是[1 5 3 0 0 0 0 0 0 0 ]与十个输出神经元相对应或者说与标签相对应。
  • 通常用在分类的最后一层,将结果转化为概率

3-1 非线性回归的例子

各种函数的解释,tanh函数

  • 列是神经元的个数

    • 输入x,是一个数,所以输入神经元只有一个,列为1
    • 中间层10个神经元,列为10
      • 中间层为什么是10个???
        • 多少应该都可以吧 ,但是要改变W、b的形状来让最后结果变成一列
    • 输出y,也是一个数,所以输出神经元也只有一个,列为1
  • 行是输入的数据的数量。

  • 权值初始随机数,偏移初始值0

  • 计算公式为L1=x * W1+b1,prediction=L1 * W2+b2

  • prediction是预测的y值

      import tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt# 造数据# 200行一列# 使用numpy生成200个随机点x_data=np.linspace(-0.5,0.5,200)#这个是200列一行的数组,在-0.5到+0.5之间返回200个数字,均匀间隔x_data=x_data[:,np.newaxis]#变成了200行一列,np.newaxis=1这样看,实际上打出来是none。#np.newaxis的作用就是在这一位置增加一个一维,这一位置指的是np.newaxis所在的位置,比较抽象,需要配合例子理解。此种就是第二维noise=np.random.normal(0,0.02,x_data.shape)y_data=np.square(x_data)+noise# 定义两个placeholder#输入输出一个神经元,所以一列,中间层十个神经元,所以10列x=tf.placeholder(tf.float32,[None,1])#不定行,确定列只有一列y=tf.placeholder(tf.float32,[None,1])#简单神经网络#定义个中间层,中间层10个神经元Weights_L1=tf.Variable(tf.random_normal([1,10]))biases_L1=tf.Variable(tf.zeros([1,10]))#200*1的矩阵x,和1*10的矩阵Weights_L1的乘积为(200,10)+(1,10)=(200,10)。每一行单独与biases_L1相加。Wx_plus_b_L1=tf.matmul(x,Weights_L1)+biases_L1L1=tf.nn.tanh(Wx_plus_b_L1)#中间层的输出#定义神经网络输出层,只有一个神经元,但是是一个10个数字的数组Weights_L2=tf.Variable(tf.random_normal([10,1]))biases_L2=tf.Variable(tf.zeros([1,1]))# 矩阵形状变化(200,10)*(10,1)=(200,1),(200,1)+(1,1)依然每行单独相加。因为一行是一个数据。Wx_plus_b_L2=tf.matmul(L1,Weights_L2)+biases_L2prediction=tf.nn.tanh(Wx_plus_b_L2)# 二次代价函数loss=tf.reduce_mean(tf.square(y-prediction))#使用梯度下降法训练train_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss)with tf.Session() as sess:# 变量初始化sess.run(tf.global_variables_initializer())for _ in range(2000):print(sess.run(train_step,feed_dict={x:x_data,y:y_data}))L11,pre=sess.run([L1,prediction], feed_dict={x: x_data, y: y_data})print(L11.shape)print(pre.shape)#获得预测值prediction_value=sess.run(prediction,feed_dict={x:x_data})#画图plt.figure()plt.scatter(x_data,y_data)#散点图plt.plot(x_data,prediction_value,'r-',lw=5)#实线plt.show()
    

在这里插入图片描述


查看数据实际值的方法

L11,pre=sess.run([L1,prediction], feed_dict={x: x_data, y: y_data})
print(L11.shape)
print(pre.shape)

PS

  1. tf.multiply()两个矩阵中对应元素各自相乘
  2. tf.matmul()将矩阵a乘以矩阵b,生成a * b。
      要求a的行数与b的列数相同。a为x * z的矩阵,b为z * y的矩阵。结果为x*y的矩阵
  3. b的形状依据每个批次的形状而定,在中间层时,每个批次未必是一行n列,也可能变换成多行多列,此时b随之改变。b1(1,10),b2(1,1)

3-2 mnist数据集分类-简单版本

  • one-hot:把标签转化为只有0,1的形式,某一位是1则为某个
  • 把数据集放到这个位置,也可以直接网络下载
    在这里插入图片描述

常见数据说明

  • batch_size:批次大小,这里是一次性向神经网络里输入多少张图片。一个批次里有多少张图片。
  • n_batch:有时是num_batches。将全部的图片分为多少批次。
  • epoch:迭代次数,整体循环的次数,训练多少次。
  • 一次输入的矩阵:(batch_size,输入层神经元数目)
    • 输入层神经元数目:输入矩阵的列数,一个输入序列的长度,这里是一个图片的像素点数784。
      • 实际图片是28*28的矩阵,这里直接用序列表示,就是784的一维数组
  • 一次输出的矩阵:(batch_size,输出层神经元数目)
    • 输出层神经元数目:输出矩阵的列数,一个输出序列的长度,这里是图片的标签的序列的长度10.

用到的函数

  • tf.equal 比较两个参数的大小是否一样。
  • tf.argmax(y,1)y中取值最大的在哪个位置。index。第二个参数是维度,axis=1即代表在第二维度,列上最大
  • tf.cast(correct_prediction,tf.float32)改变格式
  • tf.reduce_mean求个平均值得到准确率

最终代码

	import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_data#载入数据集--这个是通过网络下载的,也可直接下载放到当前目录下mnist=input_data.read_data_sets("MNIST_data",one_hot=True)print(mnist)# 每个批次的大小batch_size=100#一次性向神经网络中输入100张图片,以矩阵形式放入#计算一共有多少个批次,也叫epoch,mnist.train.num_examples是总共的图片数,n_batch=mnist.train.num_examples // batch_size# 两个placeholderx=tf.placeholder(tf.float32,[None,784])#None会随着输入的数据而变,因为每个批次是100,所以这里会变成100。每个图片的是784个像素点,是长为784的序列y=tf.placeholder(tf.float32,[None,10])# 创建一个简单的神经网络,直接784投影到10上W=tf.Variable(tf.zeros([784,10]))b=tf.Variable(tf.zeros(10))#b的形状依据每个批次的形状而定,在中间层时,每个批次未必是一行n列,也可能变换成多行多列,此时b随之改变。prediction=tf.nn.softmax(tf.matmul(x,W)+b)#(形状(100,10)# 二次代价函数loss=tf.reduce_mean(tf.square(y-prediction))train_step=tf.train.GradientDescentOptimizer(0.20).minimize(loss)# 初始化init=tf.global_variables_initializer()# 比较两个参数的大小是否一样:tf.equal# tf.argmax(y,1)y中取值最大的在哪个位置。index。第二个参数是维度,axis=1即代表在第二维度,列上最大# 整体结果是个bool形列表correct_prediction=tf.equal(tf.argmax(y,1),tf.argmax(prediction,1))# 求准确率# tf.cast(correct_prediction,tf.float32)改变格式# tf.reduce_mean求个平均值得到准确率accuracy=tf.reduce_mean(tf.cast(correct_prediction,tf.float32))with tf.Session() as sess:sess.run(init)for epoch in range(21):#每次迭代都要对所有数据处理一次for batch in range(n_batch):#每个批次的输入batch_xs,batch_ys=mnist.train.next_batch(batch_size)sess.run(train_step,feed_dict={x:batch_xs,y:batch_ys})print(sess.run(accuracy,feed_dict={x:mnist.test.images,y:mnist.test.labels}))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/481679.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【院士思维】张钹:我们正处在AI算法不可控的危险状态

来源:清华大学人工智能国际治理研究院8月19日,2022世界机器人大会主论坛正式开幕,期间,有三位院士到场,就“未来机器人:目标、路径和挑战”的主题进行了一场深刻的谈话。三位院士分别为中国科学院院士&…

tensorflow4 代价函数、dropout、优化器

这次扔使用上次的mnist数据集分类的简单版本程序,使用不同的代价函数做计算 二次代价函数 激活函数 使用二次代价函数的运行结果 # 使用二次代价函数的结果-精度 # losstf.reduce_mean(tf.square(y-prediction)) # 0.8322 # 0.8698 # 0.8818 # 0.8882 # 0.8935 #…

强化学习先驱Richard Sutton:将开发新型计算智能体

来源:机器之心编辑:陈萍、小舟DeepMind 和阿尔伯塔大学联合成立的人工智能实验室未来几年要研究什么?2017 年,DeepMind 在加拿大的 Edmonton 成立了其首个英国之外的人工智能研究实验室,并和阿尔伯塔大学大学紧密合作&…

不隐身的“隐身战斗机”

7月19日,韩国KF-21战斗机原型机完成首飞,韩国国防部将该机定位为4代半战斗机。凭借该机,韩国将成为第9个能够研制超音速战斗机的国家。 所谓4代半战斗机,即部分采用隐身技术,同时无法完全达到5代机性能标准的战斗机。…

国科大高级人工智能笔记1-搜索

1.搜索问题 搜索问题——对原问题的建模 构成: 状态空间 包含环境中每一个细节搜索状态:只保留行动需要的细节 后继函数 行动,消耗 初始状态和目标测试 解: 一个行动序列,将初始状态–>目标状态 表示 状态空间图 搜…

自学成才的人工智能显示出与大脑工作方式的相似之处

来源:ScienceAI编译:白菜叶十年来,许多最令人印象深刻的人工智能系统都是使用大量标记数据进行教学的。例如,可以将图像标记为「虎斑猫」或「虎猫」,以「训练」人工神经网络以正确区分虎斑和虎。该战略既取得了惊人的成…

国科大高级人工智能2-人工神经网络(MLP、Hopfield)

常见组合函数 常见激活函数 结构 前馈神经网络(单向)反馈/循环神经网络 学习方法 学习模型 增量迭代 类型 监督无监督 学习策略 Hebbrian Learning 若两端的神经元同时激活,增强联接权重Unsupervised Learning循环?ωij(t1)ω…

Nature:AI的瓶颈突破在于「实体人工智能(PAI)」

来源:公众号机器之能作者:AslanMiriyev 、 Mirko Kovač翻译:Panda近些年人工智能领域已经取得了突飞猛进的进步,但这些进步大都集中于数字人工智能领域,对于能和我们这种生物体一样执行日常任务的实体人工智能&#x…

国科大高级人工智能3-DNN(BM/RBM/DBN/DBM)

1.深层、浅层、BP 出现背景优点缺点浅层神经网络为了解决非线性问题可以拟合任何函数参数多,神经元多,需要更多的计算资源和数据BP算法(对p(labelinput)建模为了计算神经网络损失回传深度神经网络(>5)(时代背景数据…

世界元宇宙大会—李伯虎院士主旨报告:工业元宇宙模式、技术与应用初探

来源:北京物联网智能技术应用协会未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)大脑研究计划,构建互联网(城市)…

国科大高级人工智能+prml4-CNN

文章目录CNN卷积paddingpoolingBP其他CNNResNets残差网络——图像数据应用CNN Hebb学习律(无监督 如果两个神经元在同一时刻被激发,则他们之间的联系应该被强化对神经元的重复刺激,使得神经元之间的突触强度增加 Delta学习律(有监…

​Science:灵长类前额叶皮质进化图谱

来源:brainnews相比其它物种,包括亲缘关系非常近的灵长类,我们人类进化出了高级的认知和复杂的社会行为。毋庸置疑,人类大脑是这一切独特变化的中心,而其中的前额叶皮质又格外的引人注目。灵长类的前额叶皮质跟其他物种…

基于深度学习的机器人目标识别和跟踪

如今,深度学习算法的发展越来越迅速,并且在图像处理以及目标对象识别方面已经得到了较为显著的突破,无论是对检测对象的类型判断,亦或者对检测对象所处方位的检测,深度学习算法都取得了远超过传统机器学习算法的准确率…

国科大高级人工智能5-RNN/LSTM/GRU/集束搜索/attention

文章目录BPTTBPTT前向传播长序列循环神经网络LSTM序列到序列的模型集束搜索——近似搜索改进的集束搜索集束搜索的误差分析图到文本注意力模型序列数据建模 输入序列–>输出序列预测序列的下一项(监督) 模糊了监督和非监督 有的cnn对序列不适用&…

揭秘虚拟电厂,它究竟是如何运行的?

来源:新浪科技(ID:techsina)作者:刘丽丽编辑 :韩大鹏与电力调度相关的虚拟电厂再次引发市场关注。日前,国内首家虚拟电厂管理中心深圳虚拟电厂管理中心揭牌,国内虚拟电厂迈入了快速发展新阶段。…

国科大高级人工智能6-GAN

文章目录生成式模型的基础:极大似然估计GANs最终版本问题非饱和博弈DCGAN不同类型的GANconditional GAN无监督条件GAN--cycle GAN对抗学习https://blog.csdn.net/suyebiubiu/category_9372769.html生成式模型的基础:极大似然估计 θ∗argmaxθExpdatalog…

为什么量子力学总是让人感到疑惑?

来源:中科院物理所作者:Paul Austin Murphy翻译:Nothing审校:藏痴我们认为量子粒子很奇怪的主要问题是将量子粒子视为经典粒子而它们的行为却表现得非常非经典。(或者,问题是将量子粒子视为“物体”&#x…

国科大高级人工智能7-命题逻辑

文章目录命题逻辑(语法Syntax)由枚举推理(inference by enumeration区别deduction(形式推演,演绎)作业(定理证明)logics:逻辑,表达信息的形式语言 语法syntax 语义semantics 逻辑…

费爱国院士:中国城市大脑已走在世界前沿,但仍需努力

信息来源:网易科技2022年9月1日,中国指挥与控制学会在京召开《城市大脑首批标准新闻发布会》正式发布《城市大脑 术语》、《城市大脑顶层规划和总体架构》;《城市大脑数字神经元基本规定》等三项团体标准,学会理事长,工…

国科大高级人工智能8-归结原理和horn子句

只有一条规则的推理 resolution(消解,归结) CNF(conjunction normal form合取范式 (A∨B)∧(B∨C)(A∨B)∧(B∨C)(A∨B)∧(B∨C)任何逻辑式都可转化为语义等价的CNF resolution消解(推理规则&…