尝试克服一下小伙伴对神经网络的恐惧No.26

2024-05-15 08:48

本文主要是介绍尝试克服一下小伙伴对神经网络的恐惧No.26,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我是小蕉。

研表究明,这的网官的demo,代码确实的是己打自的。

这两天仔细研究了一下神经网络,简单的结构其实没想象中那么恐怖,只是我们自己吓自己,今天希望能把理解到的东西分享给大家,克服一下大家的恐惧,我使用的框架是Tensorflow。

先提一个概念,placeholder占位符,这个东西是我们用来进行填坑的东西,也就是我们能在调用的使用传入的东西,其他的东西在网络编写完成之后,只能由程序进行变更,我们是不能人为干预的。

数据集是MNIST数据集,一堆的28 * 28像素的图片以及他们的标签值,测试集和训练集是分开的,不知道怎么下载的自己去官网看。我这里就直接引入了。

0?wx_fmt=png

mnist = input_data.read_data_sets('MNIST_data/',one_hot=True)

首先定义两个大坑。x就是我们的输入值,可以是测试数据,也可以是训练数据,也可以是实时的数据。tf.float32代表是,就是字面意义啦。[None,784]以及[None,10]的意思就是,第一个维度的None代表不限制输入的"行数",也就是不限制输入的数据集的大小,784代表是784输入值,10代表10个输出值。

    x   = tf.placeholder(tf.float32, [None , 784],name='input_x')

    y_ = tf.placeholder(tf.float32, [None, 10],name='input_y‘)

所以神经网络就是我们先定义好一个网络结构,其中有一个坑x是给我们的输入的,一个坑y_是给我们打好的标签。然后用训练集进行训练网络,测试集进行测试,如果效果还不错呢,我们就把这个训练完网络直接应用到实时预测当中去。再说一遍:训练完的网络可以直接应用到实时预测中。

那怎么去构建这个网络以及怎么训练呢?我们定义两个变量,w权重和b偏置值,这里定义为Variable,代表这两个变量的值是可以被程序变更的(不是认人为喔),没办法就是这么拖沓。tf.zeros意思是新建一个全0的矩阵。那这里为什么w是[784,10]的矩阵,而b是[10]的呢?这是因为我们输入的维度有784维,而输出是10维,所以我们的权重有784 * 10这么多,而输出值只有0-9,所以偏置项也只有10项。其实就是新建了784 * 10 个   y = wx + b这么一个线性模型,然后每个模型都能得给当前的y值打一个分数这样。

 w = tf.Variable(tf.zeros([784,10]))

 b = tf.Variable(tf.zeros([10]))

model = tf.matmul(x , w) + b

接下来重头戏来了,我们得到了10个类别各自的得分,咋办呢?

结果可能是    [0,0,0,0.5,0.2,0,0,0,0.1,0]这样。

那我们要选哪一个呢?我们一般来说就直接max选0.5这个啦,但是我们又不希望每次都只选0.5,那咋办?用softmax回归来做。

y = tf.nn.softmax(model)

softmax回归就是logistic回归在多项分布上的拓展,又加入了soft元素,来使得我们的结果更加具有泛化能力。(这个需要我说的留言,下次立马说,这里先不说)。

官网的图能直接说明他们的关系,这个网络够复杂了吧?

0?wx_fmt=png

好啦,定义完网络该开始定义用于训练的隐藏层了。

一个叫损失函数的原名叫交叉熵小东西出现了,咱整个神经网络的目标,就是把这个值变小变小再变小,越小越好最好全局最小。

0?wx_fmt=png

cross_entropy = - tf.reduce_sum( y_ * tf.log(y))

怎么把它变小呢?定义一个训练的步,专门用来训练的。有的算法能概率比较大达到全局最小,有的算法因为过拟合或者什么原因只能达到局部最小值。咱这里定义的就是一个使用以0.01学习率(步长)的梯度下降算法来最小化我们上面定义的损失函数。

train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)


华丽丽的分割线,好了到这里我们的网络就定义完了,上面的一切都只是定义,并没有跑起来。该给它投食了,该投多少食自己看着办,我这里投1000次,每次投100个数据。训练的过程就是每次拿一些数据,求损失函数最小值,然后把这个得到最小值的w和b,以加权的形式合并到原有的变量w和b上面去。

初始化一个会话,tensorflow一切一切的操作都只能在用会话来驱动。

sess = tf.Session()

初始化所有的变量,不跑这个,变量是不会自己初始化的喔。

sess.run(tf.initialize_all_variables())

for i in range(1000):

    batch_xs , batch_ys = mnist.train.next_batch(100)

     sess.run(train_step , feed_dict={x : batch_xs , y_ : batch_ys})

网络训练完了,该开始测试了吧?这里没啥好说的,有一个地方要特别说一下,tf.argmax(y,1)。这个地方就是说,y值可能是一个十维的向量,找到这个向量里面的最大值,并把它置为1。这样就可以对比由网络输出的y和我们已经打好的标签y_了。

 correct_prediction = tf.equal(tf.argmax(y,1) , tf.argmax(y_,1))

 accuray = tf.reduce_mean(tf.cast(correct_prediction,"float"))

 print sess.run(accuray , feed_dict={x:mnist.test.images , y_:mnist.test.labels})

至此,神经网络已经完成啦,接下来如果需要用于实时预测,那么直接就调用已经训练好的神经网络就行了。

result = sess.run(tf.argmax(y,1), feed_dict={x:SomeData})

持久化的话,tensorflow提供了saver这个小东西,我会慢慢说哒。

好啦,吾辈笨愚,小伙伴们对神经网络的恐惧有没有少一丢丢丢呢??

放个朴素的,0元好久了

0?wx_fmt=jpeg

这篇关于尝试克服一下小伙伴对神经网络的恐惧No.26的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/991363

相关文章

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

【详细介绍一下GEE】

GEE(Google Earth Engine)是一个强大的云计算平台,它允许用户处理和分析大规模的地球科学数据集,如卫星图像、气候模型输出等。以下是对GEE用法的详细介绍: 一、平台访问与账户设置 访问GEE平台: 用户可以通过访问Google Earth Engine的官方网站来开始使用GEE。 创建账户: 用户需要注册并登录Google账户,然后申请访问GEE平台。申请过程可能需要提

机器学习之监督学习(三)神经网络

机器学习之监督学习(三)神经网络基础 0. 文章传送1. 深度学习 Deep Learning深度学习的关键特点深度学习VS传统机器学习 2. 生物神经网络 Biological Neural Network3. 神经网络模型基本结构模块一:TensorFlow搭建神经网络 4. 反向传播梯度下降 Back Propagation Gradient Descent模块二:激活函数 activ

图神经网络框架DGL实现Graph Attention Network (GAT)笔记

参考列表: [1]深入理解图注意力机制 [2]DGL官方学习教程一 ——基础操作&消息传递 [3]Cora数据集介绍+python读取 一、DGL实现GAT分类机器学习论文 程序摘自[1],该程序实现了利用图神经网络框架——DGL,实现图注意网络(GAT)。应用demo为对机器学习论文数据集——Cora,对论文所属类别进行分类。(下图摘自[3]) 1. 程序 Ubuntu:18.04

基于深度学习 卷积神经网络resnext50的中医舌苔分类系统

项目概述 本项目旨在通过深度学习技术,特别是利用卷积神经网络(Convolutional Neural Networks, CNNs)中的ResNeXt50架构,实现对中医舌象图像的自动分类。该系统不仅能够识别不同的舌苔类型,还能够在PyQt5框架下提供一个直观的图形用户界面(GUI),使得医生或患者能够方便地上传舌象照片并获取分析结果。 技术栈 深度学习框架:采用PyTorch或其他

图神经网络(2)预备知识

1. 图的基本概念         对于接触过数据结构和算法的读者来说,图并不是一个陌生的概念。一个图由一些顶点也称为节点和连接这些顶点的边组成。给定一个图G=(V,E),  其 中V={V1,V2,…,Vn}  是一个具有 n 个顶点的集合。 1.1邻接矩阵         我们用邻接矩阵A∈Rn×n表示顶点之间的连接关系。 如果顶点 vi和vj之间有连接,就表示(vi,vj)  组成了

自然语言处理系列六十三》神经网络算法》LSTM长短期记忆神经网络算法

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列六十三神经网络算法》LSTM长短期记忆神经网络算法Seq2Seq端到端神经网络算法 总结 自然语言处理系列六十三 神经网络算法》LSTM长短期记忆神经网络算法 长短期记忆网络(LSTM,Long S

神经网络训练不起来怎么办(零)| General Guidance

摘要:模型性能不理想时,如何判断 Model Bias, Optimization, Overfitting 等问题,并以此着手优化模型。在这个分析过程中,我们可以对Function Set,模型弹性有直观的理解。关键词:模型性能,Model Bias, Optimization, Overfitting。 零,领域背景 如果我们的模型表现较差,那么我们往往需要根据 Training l

概率DP (由一道绿题引起的若干问题。目前为一些老题,蒟蒻的尝试学习1.0)

概率DP: 利用动态规划去解决 概率 期望 的题目。 概率DP 求概率(采用顺推) 从 初始状态推向结果,同一般的DP类似,只是经历了概率论知识的包装。 老题: 添加链接描述 题意: 袋子里有w只白鼠,b只黑鼠,A和B轮流从袋子里抓,谁先抓到白色谁就赢。A每次随机抓一只,B每次随机 抓完一只后 会有另外一只随机老鼠跑出来。如果两个人都没有抓到白色,那么B赢。A先抓,问A赢得概率。 w b 均在

如何将卷积神经网络(CNN)应用于医学图像分析:从分类到分割和检测的实用指南

引言 在现代医疗领域,医学图像已经成为疾病诊断和治疗规划的重要工具。医学图像的类型繁多,包括但不限于X射线、CT(计算机断层扫描)、MRI(磁共振成像)和超声图像。这些图像提供了对身体内部结构的详细视图,有助于医生在进行准确诊断和制定个性化治疗方案时获取关键的信息。 1. 医学图像分析的挑战 医学图像分析面临诸多挑战,其中包括: 图像数据的复杂性:医学图像通常具有高维度和复杂的结构