神经网络常见概念总结

激活函数:将神经网络上一层的输入,经过神经网络层的非线性变换转换后,通过激活函数,得到输出。常见的激活函数包括:sigmoid, tanh, relu等。https://blog.csdn.net/u013250416/article/details/80991831

为什么要引入非线性激活函数

如果不使用非线性激活函数,激活函数本质上相当于f(x)=ax+b。在这种情况下,神经网络每一层的输出都是上层输入的线性函数。此时,不管神经网络有多少层,输出与输入都是线性关系,与没有隐层是一样的。也就相当于最原始的感知机,连最基本的异或问题都无法解决,更别说其他更复杂的非线性问题。

损失函数:度量神经网络的输出的预测值,与实际值之间的差距的一种方式。常见的损失函数包括:最小二乘损失函数、交叉熵损失函数、回归中使用的smooth L1损失函数等。

优化函数:也就是如何把损失值从神经网络的最外层传递到最前面。如最基础的梯度下降算法,随机梯度下降算法,批量梯度下降算法,带动量的梯度下降算法,Adagrad,Adadelta,Adam等:https://blog.csdn.net/u013250416/article/details/81090059

梯度下降法:反向求导,调整w和b权重值,使得损失函数

手写数字mnist数据集分类代码示例:

# coding: utf-8

# In[2]:

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data

# In[3]:

#载入数据集
mnist = input_data.read_data_sets("MNIST_data",one_hot=True)

#每个批次的大小
batch_size = 100  # 一次性将100张图片放入这个神经网络中训练(以矩阵的形式放入)
#计算一共有多少个批次
n_batch = mnist.train.num_examples // batch_size

#定义两个placeholder
x = tf.placeholder(tf.float32,[None,784]) # 按批次传入值,那么none就会变成100
y = tf.placeholder(tf.float32,[None,10]) # y是标签

#创建一个简单的神经网络(只有输入和输出层,没有隐藏层)。784个输入和10个输出神经元
W = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))
prediction = tf.nn.softmax(tf.matmul(x,W)+b)

#二次代价函数
loss = tf.reduce_mean(tf.square(y-prediction))
#使用梯度下降法
train_step = tf.train.GradientDescentOptimizer(0.2).minimize(loss)

#初始化变量
init = tf.global_variables_initializer()

#结果存放在一个布尔型列表中
correct_prediction = tf.equal(tf.argmax(y,1),tf.argmax(prediction,1))#(equal函数的作用是比较其内的2个参数,相同返回true,不同返回false)argmax返回一维张量中最大的值所在的位置
#求准确率
accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32))#cast函数的作用是类型转换,把布尔型转换为32位浮点型(true变为1.0,false变为0.0)

with tf.Session() as sess:
    sess.run(init)
    for epoch in range(21):#执行完一次这个for循环,相当于把训练集的图片计算了二十一次
        for batch in range(n_batch):#执行完一次这个for循环,相当于把训练集的图片计算了一次
            batch_xs,batch_ys =  mnist.train.next_batch(batch_size)#获得每个批次的100张图片,图片数据存在xs里,标签存在ys里
            sess.run(train_step,feed_dict={x:batch_xs,y:batch_ys})#获得一个批次的数据进行一次训练,再获得下一个批次的数据再训练······

        acc = sess.run(accuracy,feed_dict={x:mnist.test.images,y:mnist.test.labels})#feed传进去的是测试集的图片以及对应标签
        print("Iter " + str(epoch) + ",Testing Accuracy " + str(acc))#每训练一次,打印准确率

# In[ ]:

原文地址:https://www.cnblogs.com/zhaoyanhaoBlog/p/10077244.html

时间: 2024-10-09 21:47:13

神经网络常见概念总结的相关文章

聊聊JVM(二)说说GC的一些常见概念

转自CSDN 上一篇总结GC的基础算法,各种GC收集器的基本原理,还是比较粗粒度的概念.这篇会整理一些GC的常见概念,理解了这些概念,相信对GC有更加深入的理解 1. 什么时候会触发Minor GC? Eden区域满了,或者新创建的对象大小 > Eden所剩空间 CMS设置了CMSScavengeBeforeRemark参数,这样在CMS的Remark之前会先做一次Minor GC来清理新生代,加速之后的Remark的速度.这样整体的stop-the world时间反而断 Full GC的时候会

H264的常见概念

H264,应该是读者常见的技术术语吧,那h264是什么东西呢? H.264是视频编码标准. 在术语的拼写上,小程以能理解为准. 本文介绍H264的常见概念. 预警,本文相对枯燥,读者可随时放弃阅读. (1)H264从哪里来? 小程之前介绍媒体格式的概念时,有提到过国际标准化组织(ISO),现在又是它出场的时候. H264是国际标准化组织(ISO)与国际电信联盟(ITU)的产物. 但ISO是大boss,给的是造福人类的方向,真正做这件事的是他的下属MPEG,MPEG是动态图像专家组. 同样,ITU

卷积神经网络基本概念(卷积篇 01)

Computer Vision Theory CNN Part 1 简介 1.1 我先后在以下场景下见到过卷积 微分方程 傅立叶变换及其应用 概率论 卷积神经网 1.2 相关阅读 推荐一下 Christopher Olah 的理解卷积的blog http://colah.github.io/posts/2014-07-Understanding-Convolutions/ 数学论证 https://www.dsprelated.com/freebooks/mdft/Convolution.htm

计算机视觉概要和卷积神经网络基础概念

本文主要介绍了CV概要和CNN基础概念. 1 计算机视觉(computer vision)简介 计算机视觉旨在识别和理解图像/视频中的内容.其诞生于1966年MIT AI Group的"the summer vision project".当时,人工智能其他分支的研究已经有一些初步成果.由于人类可以很轻易地进行视觉认知,MIT的教授们希望通过一个暑期项目解决计算机视觉问题.当然,计算机视觉没有被一个暑期内解决,但计算机视觉经过50余年发展已成为一个十分活跃的研究领域.如今,互联网上超过

人工神经网络基础概念、原理知识(补)

一提到人工神经网络应当想到三个基础的知识点:一是神经元模型:二是神经网络结构:三是学习算法.神经网络的种类多种多样,但其分类依据逃不出上面上个基础知识点.所以在学习中如果能够仅仅把握住以上三个线索,就能触类旁通,拥有一个非常好的视角看待神经网络.今天就对这三个基础知识点进行总结,达到指导神经网络学习以及深化对神经网络的理解的目的. 一.神经元模型 人工神经网络是在现代神经生物学研究基础上提出的模拟生物过程 ,反映人脑某些特性的一种计算结构.它不是人脑神经系统的真实描写,而只是它的某种抽象.简化和

AE常见接口之间的关系(较笼统)+arcgis常见概念

常见的接口有如下关系 IworkspaceFactory-------------->IworkSpace------------------>IfeatureWorkSpace ---------------->IFeatrueClass------------->IFeature() |                                       | |                                       | |             

Java基础学习第七天——面向对象常见概念

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.02.26 lutianfei none 成员变量与局部变量 成员变量与局部变量区别: A:在类中的位置不同 成员变量:在类中,方法外 局部变量:在方法定义中或者方法声明上. B:在内存中的位置不同: 成员变量:在堆内存 局部变量:在栈内存 C:生命周期不同 成员变量:随着对象的创建而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在,随着方法的调用完毕而存在 D:初始化值不同 成员变量:有默认初始值 局部变量

敏捷:Scrum常见概念一览

常见的敏捷方法有:Scrum.极限编程(XP).特征驱动开发(Feature-Driven Development,FDD).动态系统开发方法(Dynamic System Development Methods,DSDM).水晶家族方法(Crystal family methods,透明水晶.×××水晶.橙色水晶.红色水晶).精益软件开发(Lean software development).看板开发(Kanban Development). 上海交通大学项目管理中心1.Scrum 的三个理论

PHP常见概念混淆(七)之self、static、parent的区别

前言 首先,这个 static 符号跟 static(静态)关键字不是一个东西.这三个符号在PHP对象中共有两种用法: 在类内部,可以使用 new self. new static. new parent 创建新对象 可以使用 self::.static::.parent::调用静态变量和方法. 创建新对象 <?php class test{ public static function test_self(){ return new self(); } public static functi