前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Tensorflow之 CNN卷积神经网络的MNIST手写数字识别

Tensorflow之 CNN卷积神经网络的MNIST手写数字识别

作者头像
用户1332428
发布于 2018-03-08 10:34:15
发布于 2018-03-08 10:34:15
1.6K00
代码可运行
举报
文章被收录于专栏:人工智能LeadAI人工智能LeadAI
运行总次数:0
代码可运行
前言

tensorflow中文社区对官方文档进行了完整翻译。鉴于官方更新不少内容,而现有的翻译基本上都已过时。故本人对更新后文档进行翻译工作,纰漏之处请大家指正。(如需了解其他方面知识,可参阅以下Tensorflow系列文章)。

深入MNIST

TensorFlow是一个非常强大的用来做大规模数值计算的库。其所擅长的任务之一就是实现以及训练深度神经网络。在本教程中,通过为MNIST构建一个深度卷积神经网络的分类器,我们将学到构建一个TensorFlow模型的基本步骤。

这个教程假设你已经熟悉神经网络和MNIST数据集。如果你尚未了解,请查看MNIST For ML Beginners(https://www.tensorflow.org/get_started/mnist/beginners)。在学习教程之前,请确保已经安装Install TensorFlow(https://www.tensorflow.org/install/)。

关于本教程

本教程第一部分为mnist_softmax.py(https://github.com/tensorflow/tensorflow/blob/r1.3/tensorflow/examples/tutorials/mnist/mnist_deep.py)做出了说明,这是一个TensorFlow模型的基本实现。而第二部分则展示了一些提高准确率的途径。

我们将在本教程中实现:

  • 实现一个softmax回归函数来识别MNIST手写数字集,这是个基于图像中每个像素点的模型
  • 用Tensorflow通过上万个样本的数据集训练出识别数字的模型
  • 用测试数据集验证模型的准确率
  • 建立、训练、测试一个多层卷积神经网络来提升准确

创建

在创建模型之前,我们会先加载MNIST数据集,然后启动一个TensorFlow的session。

1、加载MNIST数据

如果你打算复制、粘贴本教程的代码,从这两行代码开始,这段代码会自动下载、读入数据集:

from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets('MNIST_data', one_hot=True)

这里,mnist是一个轻量级的类。它以Numpy数组的形式存储着训练、校验和测试数据集。同时提供了一个函数,用于在迭代中获得minibatch,后面我们将会用到。

2、运行TensorFlow的InteractiveSession

Tensorflow依赖于一个高效的C++后端来进行计算。与后端的这个连接叫做session。一般而言,使用TensorFlow程序的流程是先创建一个图,然后在session中启动它。

这里,我们使用更加方便的InteractiveSession类。通过它,你可以更加灵活地构建你的代码。它能让你在运行图的时候,插入一些computation graph(https://www.tensorflow.org/get_started/get_started#the_computational_graph),这些计算图是由某些操作(operations)构成的。这对于工作在交互式环境中的人们来说非常便利,比如使用IPython。如果你没有使用InteractiveSession,那么你需要在启动session之前构建整个计算图,然后launching the graph(https://www.tensorflow.org/get_started/get_started#the_computational_graph)。

import tensorflow as tf sess = tf.InteractiveSession()

为了在Python中进行高效的数值计算,我们通常会使用像NumPy一类的库,将一些诸如矩阵乘法的耗时操作在Python环境的外部来计算,这些计算通常会通过其它语言并用更为高效的代码来实现。

但遗憾的是,每一个操作切换回Python环境时仍需要不小的开销。如果你想在GPU或者分布式环境中计算时,这一开销更加糟糕,这一开销主要可能是用来进行数据迁移

TensorFlow也是在Python外部完成其主要工作,但是进行了改进以避免这种开销。其并没有采用在Python外部独立运行某个耗时操作的方式,而是先让我们描述一个交互操作图,然后完全将其运行在Python外部。这与Theano或Torch的做法类似。

因此Python代码的目的是用来构建这个可以在外部运行的计算图,以及安排计算图的哪一部分应该被运行。详情请查看Getting Started With TensorFlow(https://www.tensorflow.org/get_started/get_started)中的Computation Graph(https://www.tensorflow.org/get_started/get_started#the_computational_graph)一节。

构建soft max回归模型

在这一节中我们将建立一个拥有一个线性层的softmax回归模型。在下一节,我们会将其扩展为一个拥有多层卷积网络的softmax回归模型。

1、占位符

我们通过为输入图像和目标输出类别创建节点,来开始构建计算图。

x = tf.placeholder("float", shape=[None, 784]) y_ = tf.placeholder("float", shape=[None, 10])

这里的x和y并不是特定的值,相反,他们都只是一个占位符,可以在TensorFlow运行某一计算时根据该占位符输入具体的值。

输入图片x是一个2维的浮点数张量。这里,分配给它的shape为[None, 784],其中784是一张展平的MNIST图片(28×28像素)的维度。None表示其值大小不定,在这里作为第一个维度值,用以指代batch的大小,意即x的数量不定。输出类别值y_也是一个2维张量,其中每一行为一个10维的one-hot向量,用于代表对应某一MNIST图片的类别(0-9)。

虽然placeholder的shape参数是可选的,但有了它,TensorFlow能够自动捕捉因数据维度不一致导致的错误。

2、变量

我们现在为模型定义权重W和偏置b。可以将它们当作额外的输入量,但是TensorFlow有一个更好的处理方式:变量。一个变量代表着TensorFlow计算图中的一个值,能够在计算过程中使用,甚至进行修改。在机器学习的应用过程中,模型参数一般用Variable来表示。

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

我们在调用tf.Variable的时候传入初始值。在这个例子里,我们把W和b都初始化为零向量。W是一个784x10的矩阵(因为我们有784个特征和10个输出值)。b是一个10维的向量(因为我们有10个分类)。

变量需要通过seesion初始化后,才能在session中使用。这一初始化步骤为,为初始值指定具体值(本例当中是全为零),并将其分配给每个变量,可以一次性为所有变量完成此操作。

sess.run(tf.global_variables_initializer())

现在我们可以实现我们的回归模型了。这只需要一行!我们把向量化后的图片x和权重矩阵W相乘,加上偏置b。

y = tf.nn.softmax(tf.matmul(x,W) + b)

我们同样能很容易规定损失函数。损失表明模型的预测有多糟糕;我们试着在所有样本的训练中最小化损失函数。在这里,我们的损失函数是目标真实结果与应用于模型预测的softmax激活函数之间的交叉熵。在初学者教程中,我们使用了稳定的公式:

cross_entropy = tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y))

注意,tf.nn.softmax_cross_entropy_with_logits将softmax应用于模型的非标准化模型预测,并对所有类别进行了求和。tf.reduce_mean对所有求和取均值。

训练模型

我们已经定义好模型和训练用的损失函数,那么用TensorFlow进行训练就很简单了。因为TensorFlow知道整个计算图,它可以使用自动微分法找到对于各个变量的损失的梯度值。TensorFlow有 built-in optimization algorithms(https://www.tensorflow.org/api_guides/python/train#optimizers)这个例子中,我们用最陡梯度下降法让交叉熵下降,步长为0.5.

这一行代码实际上是用来往计算图上添加一个新操作,其中包括计算梯度,计算每个参数的步长变化,并且计算出新的参数值。

返回的train_step操作对象,在运行时会使用梯度下降来更新参数。因此,整个模型的训练可以通过反复地运行train_step来完成。

for i in range(1000): batch = mnist.train.next_batch(50) train_step.run(feed_dict={x: batch[0], y_: batch[1]})

每一步迭代,我们都会加载50个训练样本,然后执行一次train_step,并通过feed_dict将x 和 y_张量占位符用训练训练数据替代。注意,在计算图中,你可以用feed_dict来替代任何张量,并不仅限于替换占位符。

评估模型

那么我们的模型性能如何呢?

首先让我们找出那些预测正确的标签。tf.argmax 是一个非常有用的函数,它能给出某个tensor对象在某一维上的其数据最大值所在的索引值。由于标签向量是由0,1组成,因此最大值1所在的索引位置就是类别标签,比如tf.argmax(y,1)返回的是模型对于任一输入x预测到的标签值,而 tf.argmax(y_,1) 代表正确的标签,我们可以用 tf.equal 来检测我们的预测是否真实标签匹配(索引位置一样表示匹配)。

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

这里返回一个布尔数组。为了计算我们分类的准确率,我们将布尔值转换为浮点数来代表对、错,然后取平均值。例如:[True, False, True, True]变为[1,0,1,1],计算出平均值为0.75。

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

最后,我们可以计算出在测试数据上的准确率,大概是92%。

print accuracy.eval(feed_dict={x: mnist.test.images, y_: mnist.test.labels})

构建一个多层卷积网络

在MNIST上只有92%正确率,实在太糟糕。在这个小节里,我们用一个稍微复杂的模型:卷积神经网络来改善效果。这会达到大概99.2%的准确率。虽然不是最高,但是还是比较让人满意。

下面这个在TensorBoard中建立的图,就是我们要构建的模型:

mnist_deep.png

为了创建这个模型,我们需要创建大量的权重和偏置项。这个模型中的权重在初始化时应该加入少量的噪声来打破对称性以及避免0梯度。由于我们使用的是ReLU神经元,因此比较好的做法是用一个较小的正数来初始化偏置项,以避免神经元节点输出恒为0的问题(dead neurons)。为了不在建立模型的时候反复做初始化操作,我们定义两个函数用于初始化。

def weight_variable(shape): initial = tf.truncated_normal(shape, stddev=0.1) return tf.Variable(initial) def bias_variable(shape): initial = tf.constant(0.1, shape=shape) return tf.Variable(initial)

1、卷积和池化

TensorFlow在卷积和池化上有很强的灵活性。我们怎么处理边界?步长应该设多大?在这个实例里,我们会一直使用vanilla版本。我们的卷积使用1步长(stride size),0边距(padding size)的模板,保证输出和输入是同一个大小。我们的池化用简单传统的2x2大小的模板做max pooling。为了代码更简洁,我们把这部分抽象成一个函数。

def conv2d(x, W): return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME') def max_pool_2x2(x): return tf.nn.max_pool(x, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME')

现在我们可以开始实现第一层了。它由一个卷积接一个max pooling完成。卷积在每个5x5的patch中算出32个特征。卷积的权重张量形状是[5, 5, 1, 32],前两个维度是patch的大小,接着是输入的通道数目,最后是输出的通道数目。 而对于每一个输出通道都有一个对应的偏置量。

W_conv1 = weight_variable([5, 5, 1, 32])

b_conv1 = bias_variable([32])

为了用这一层,我们把x变成一个4d向量,其第2、第3维对应图片的宽、高,最后一维代表图片的颜色通道数

x_image = tf.reshape(x, [-1,28,28,1])

我们把x_image和权值向量进行卷积,加上偏置项,然后应用ReLU激活函数,最后进行池化(max pooling)。max_pool_2x2 函数将图像大小变成了14x14。

h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1) h_pool1 = max_pool_2x2(h_conv1)

2、第二层卷积

为了构建一个更深的网络,我们会把几个类似的层堆叠起来。第二层中,每个5x5的patch会得到64个特征。

W_conv2 = weight_variable([5, 5, 32, 64]) b_conv2 = bias_variable([64]) h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2) h_pool2 = max_pool_2x2(h_conv2)

3、密集连接层

现在,图片尺寸减小到7x7,我们加入一个有1024个神经元的全连接层,用于处理整个图片。我们把池化层输出的张量reshape成向量,乘上权重矩阵,加上偏置,然后对其使用ReLU。

W_fc1 = weight_variable([7 * 7 * 64, 1024]) b_fc1 = bias_variable([1024]) h_pool2_flat = tf.reshape(h_pool2, [-1, 7*7*64]) h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, W_fc1) + b_fc1)

4、Dropout

为了减少过拟合,我们在输出层之前加入dropout。我们用一个placeholder来代表一个神经元的输出在dropout中保持不变的概率。这样我们可以在训练过程中启用dropout,在测试过程中关闭dropout。 TensorFlow的tf.nn.dropout操作除了可以屏蔽神经元的输出外,还会自动处理神经元输出值的scale。所以用dropout的时候可以不用考虑scale。

keep_prob = tf.placeholder("float") h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)

5、输出层

最后,我们添加一个softmax层,就像前面的单层softmax regression一样。

W_fc2 = weight_variable([1024, 10]) b_fc2 = bias_variable([10]) y_conv=tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2) + b_fc2)

6、训练和评估模型

这个模型的效果如何呢?为了进行训练和评估,我们使用与之前简单的单层SoftMax神经网络模型几乎相同的一套代码。

不同之处在于:

  • 我们替换了最陡梯度下降,采用更加复杂的ADAM优化器
  • 在feed_dict中加入额外的参数keep_prob来控制dropout比例
  • 每100次迭代输出一次日志

我们使用tf.Session,而不是tf.InteractiveSession。这样可以更好地把创建图形(设计模型)和评估图形(模型拟合)区分开。它通常是为了更明了的代码。tf.Session是在一个代码块(block)中创建的,因此一旦代码块退出,它就会自动销毁。请注意,它进行了20,000次的训练迭代,可能需要一段时间(可能长达半小时),这取决于您的处理器。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cross_entropy = tf.reduce_mean(     
tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y_conv))
train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
correct_prediction = tf.equal(tf.argmax(y_conv, 1), tf.argmax(y_, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
with tf.Session() as sess:   
sess.run(tf.global_variables_initializer())   
for i in range(20000):     
batch = mnist.train.next_batch(50)     
if i % 100 == 0:       
train_accuracy = accuracy.eval(feed_dict={          
 x: batch[0], y_: batch[1], keep_prob: 1.0})       
print('step %d, training accuracy %g' % (i, train_accuracy))     
train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5})    
print('test accuracy %g' % accuracy.eval(feed_dict={       
x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0}))

以上代码,在最终测试集上的准确率大概是99.2%。

目前为止,我们已经学会了用TensorFlow快捷地搭建、训练和评估一个相对复杂的深度学习模型。

对于这个小的卷积网络,Dropout的存在与否对性能几乎没有影响。Dropout对减少过拟合一般十分有效,但但在训练非常大的神经网络时,它才是最有用的。

原文地址:Deep MNIST for Experts(https://www.tensorflow.org/get_started/mnist/pros) 翻译:周乘

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-11-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 人工智能LeadAI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于TensorFlow卷积神经网络与MNIST数据集设计手写数字识别算法
TensorFlow是一个基于Python和基于数据流编程的机器学习框架,由谷歌基于DistBelief进行研发,并在图形分类、音频处理、推荐系统和自然语言处理等场景下有着丰富的应用。2015年11月9日,TensorFlow依据Apache 2.0 开源协议开放源代码。
润森
2022/09/22
7810
基于TensorFlow卷积神经网络与MNIST数据集设计手写数字识别算法
基于tensorflow实现简单卷积神经网络Lenet5
参考博客:https://blog.csdn.net/u012871279/article/details/78037984 https://blog.csdn.net/u014380165/article/details/77284921 目前人工智能神经网络已经成为非常火的一门技术,今天就用tensorflow来实现神经网络的第一块敲门砖。 首先先分模块解释代码。 1.先导入模块,若没有tensorflow还需去网上下载,这里使用mnist训练集来训练,进行手写数字的识别。 from tensorflo
徐飞机
2018/05/15
1.1K0
TensorFlow实现卷积神经网络
1.卷积神经网络简介 卷积神经网络(convolutional neural network, CNN),最早是19世纪60年代,生物学家对猫视觉皮层研究发现:每个视觉神经元只会处理一小块区域是视觉图像,即感受野。后来到了80年代,日本科学家提出了神经认知机(Neocognitron)的概念,也可以算作是卷积神经网络最初的实现原型,在CS231n的课上说过,卷积神经网络不是一夜产生的,从这个发展过程中我们就可以看出,确实是这样的。卷积神经网络的要点就是局部连接(Local Connection)、权值共
用户1220053
2018/03/29
6350
TensorFlow实现卷积神经网络
TensorFlow实战:CNN构建MNIST识别(Python完整源码)
在文章(TensorFlow实战:SoftMax手写体MNIST识别(Python完整源码))中,我们MNIST手写体识别数据集,使用TensorFlow构建了一个softMAX多分类器,达到了91%的正确率,相比人类98%的识别率,这实在是天糟糕了。为此,本文实现一个稍微复杂的模型:卷积神经网络来改善对MNIST的识别率,这将会达到大概99.2%的准确率。下面让我们一步步的实现该模型,具体的Python源码已上传至我的GitHub:https://github.com/ml365/softmax_mnis
昱良
2018/04/08
2.9K0
CNN卷积神经网络原理讲解+图片识别应用(附源码)[通俗易懂]
先给大家出个脑筋急转弯:在白纸上画出一个大熊猫,一共需要几种颜色的画笔?——大家应该都知道,只需要一种黑色的画笔,只需要将大熊猫黑色的地方涂上黑色,一个大熊猫的图像就可以展现出来。
全栈程序员站长
2022/07/01
1.5K0
CNN卷积神经网络原理讲解+图片识别应用(附源码)[通俗易懂]
TensorFlow -2: 用 CNN 识别数字
本文介绍了如何使用 TensorFlow 在 MNIST 数据集上训练一个手写数字识别的模型。首先,文章介绍了 TensorFlow 的基本概念和如何在 TensorFlow 中实现简单的线性回归模型。然后,文章详细说明了如何使用 TensorFlow 中的卷积神经网络(CNN)和全连接层来实现手写数字识别模型。最后,文章通过在 TensorFlow 中实现一个简单的手写数字识别器,为读者提供了一个完整的实践案例。
杨熹
2017/07/31
2.6K0
TensorFlow -2: 用 CNN 识别数字
【深度学习】5:CNN卷积神经网络原理
前言:先坦白的说,深度神经网络的学习在一开始对我造成的困扰还是很大的,我也是通过不断地看相关的视频资料、文献讲解尝试去理解记忆。毕竟这些内容大多都是不可查的,我们看到的都只是输入输出的东西,里面的内部运作以及工作原理,都需要沉心静思。
全栈程序员站长
2022/09/13
8260
【深度学习】5:CNN卷积神经网络原理
tensorflow笔记(五)之MNIST手写识别系列二
http://www.cnblogs.com/fydeblog/p/7455233.html
努力努力再努力F
2018/09/11
3310
tensorflow笔记(五)之MNIST手写识别系列二
用Tensorflow实现卷积神经网络CNN
一、数据准备 实验数据使用MNIST数据集。 MNIST 数据集已经是一个被”嚼烂”了的数据集, 很多教程都会对它”下手”, 几乎成为一个 “典范”。 在很多tensorflow教程中,用下面这一句下载mnist数据集: mnist = input_data.read_data_sets('MNIST_data', one_hot=True) 但实际运行时根本无法通过网络下载,解决方案就是手工下载数据,然后直接导入使用。 下载地址:http://yann.lecun.com/exdb/mnist/ 4个
海天一树
2018/04/17
9280
[TensorFlow深度学习入门]实战六·用CNN做Kaggle比赛手写数字识别准确率99%+
参考博客地址 本博客采用Lenet5实现,也包含TensorFlow模型参数保存与加载参考我的博文,实用性比较好。在训练集准确率99.85%,测试训练集准确率99%+。
小宋是呢
2019/06/27
9730
学习笔记CB009:人工神经网络模型、手写数字识别、多层卷积网络、词向量、word2vec
由n个输入特征得出与输入特征几乎相同的n个结果,训练隐藏层得到意想不到信息。信息检索领域,模型训练合理排序模型,输入特征,文档质量、文档点击历史、文档前链数目、文档锚文本信息,为找特征隐藏信息,隐藏层神经元数目设置少于输入特征数目,经大量样本训练能还原原始特征模型,相当用少于输入特征数目信息还原全部特征,压缩,可发现某些特征之间存在隐含相关性,或者有某种特殊关系。让隐藏层神经元数目多余输入特征数目,训练模型可展示特征之间某种细节关联。输出输入一致,自编码算法。
利炳根
2018/03/13
7950
CNN+MNIST+INPUT_DATA数字识别
TALK IS CHEAP,SHOW ME THE CODE,先从MNIST数据集下载脚本Input_data开始
代号404
2018/08/19
9690
一步步提高手写数字的识别率(3)
在前面的两篇文章《一步步提高手写数字的识别率(1)》和《一步步提高手写数字的识别率(2)》中,我们分别介绍了使用Softmax回归和神经网络来实现手写数字识别,其准确率分别在92和98%左右,这在机器学习领域是一个非常不错的准确率,如果我们采用卷积神经网络,准确率还可以进一步提升。
云水木石
2019/07/02
7790
一步步提高手写数字的识别率(3)
TensorFlow从1到2 | 第五章 非专家莫入!TensorFlow实现CNN
当看到本篇时,根据TensorFlow官方标准《Deep MNIST for Experts》(https://tensorflow.google.cn/get_started/mnist/pros),你已经达到Expert Level,要恭喜了。 且不说是否夸大其词,换一种角度,假如能乘坐时光机仅往回飞5年,借此CNN实现,你也能在ImageNet上叱咤风云,战无不胜。就算飞不回去,它在今天依然是大杀伤力武器,大批大批老算法等着你去枪毙,大片大片垂直领域换代产品等着你去落地。这还不够么? 上一篇Tenso
用户1332428
2018/03/09
1K0
TensorFlow从1到2 | 第五章 非专家莫入!TensorFlow实现CNN
第五章(1.5)深度学习——卷积神经网络简介
卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络, 在计算机视觉等领域被广泛应用. 本文将简单介绍其原理并分析Tensorflow官方提供的示例.
两只橙
2019/02/14
7100
第五章(1.5)深度学习——卷积神经网络简介
开发 | 手把手教你用 TensorFlow 实现卷积神经网络(附代码)
AI科技评论按:本文作者徐凯文,原文载于作者个人博客,已获授权。 在知乎上看到一段介绍卷积神经网络的文章,感觉讲的特别直观明了,我整理了一下。首先介绍原理部分。 通过一个图像分类问题介绍卷积神经网络是
AI科技评论
2018/03/13
7680
开发 | 手把手教你用 TensorFlow 实现卷积神经网络(附代码)
Tensorflow入门1-CNN网络及MNIST例子讲解
人工智能自从阿尔法狗大败李世石后就异常火爆,最近工作中需要探索AI在移动端的应用,趁着这个计划入门下深度学习吧。
用户3578099
2019/08/16
1.3K0
CNN--tensorflow--code-learning
这是以tensorflow为框架,写的关于MNIST数据识别的卷积神经网络的python代码,这个代码是自己一点一点把别人的代码打印到Calab,修改,运行,再修改,再运行,我是代码的生产者,也是代码的搬运工,哈哈~
AngelNH
2020/04/15
3960
深度学习之卷积神经网络(CNN)详解与代码实现(二)
本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10737065.html
用户7225427
2020/09/03
6290
深度学习之卷积神经网络(CNN)详解与代码实现(二)
Task 3 使用TensorFlow
对于一个被研究的物体,它有多个属性(x1, x2, ... xn)和一个值y。线性回归假设y与(x1, x2, ... xn)有线性关系,也就是我们可以把y表示成关于(x1, x2, ... xn)的函数
平凡的学生族
2019/05/25
4980
推荐阅读
相关推荐
基于TensorFlow卷积神经网络与MNIST数据集设计手写数字识别算法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验