深度学习入门--使用Python、TensorFlow和Keras p.1进行深度学习基础

欢迎大家加入Python和TensorFlow教程迷你系列的最新深度学习。

自从两年前使用TensorFlow课程进行第一次深度学习以来,已经发生了很大的变化。开始学习远不如开始那么复杂,你也不需要知道那么多才能通过深入学习而获得成功。

如果您对TensorFlow如何工作的更多细节感兴趣,您仍然可以查看前面的教程,因为它们会查看更原始的TensorFlow。这是一个更深层次的快速学习的开始!

首先,我们需要在把神经网络当作一个完全的黑匣子,和理解它们的每一个细节之间找到一些平衡。

让我们展示一个典型的模型:

python tutorials

一个基本的神经网络由一个输入层组成,输入层就是你的数据,以数字的形式。在输入层之后,您将有一些所谓的“隐藏”层。隐藏层就在输入层和输出层之间。一个隐藏层意味着你只有一个神经网络。两个或更多的隐藏层?砰,你有一个很深的神经网络!

这是为什么?嗯,如果你只有一个隐藏层,模型只会学习线性关系。

如果您有许多隐藏层,您可以开始学习输入层和输出层之间的非线性关系。

单个神经元可能看起来如下:在这里插入图片描述
一个基本的神经网络由一个输入层组成,输入层就是你的数据,以数字的形式。在输入层之后,您将有一些所谓的“隐藏”层。隐藏层就在输入层和输出层之间。一个隐藏层意味着你只有一个神经网络。两个或更多的隐藏层?砰,你有一个很深的神经网络!

这是为什么?嗯,如果你只有一个隐藏层,模型只会学习线性关系。

如果您有许多隐藏层,您可以开始学习输入层和输出层之间的非线性关系。

单个神经元可能看起来如下:在这里插入图片描述
这就是魔法发生的地方。这个想法是,单个神经元就是所有输入的x权值之和,通过某种激活函数输入。激活函数是用来模拟神经元的兴奋或不兴奋。一个简单的例子是步骤函数,在某个时候,阈值被跨越,神经元触发1,否则是0。假设神经元位于第一个隐藏层,它将与下一个隐藏层通信。它会把0或1的信号,乘以权重,传给下一个神经元,这是所有神经元和所有层的过程。

对于人工神经网络来说,数学上的挑战是最好地优化你拥有的数千或数百万或任何数量的权重,这样你的输出层就能得到你所期望的结果。解决这个问题,建立我们的神经网络模型的层次,正是TensorFlow的目的所在。TensorFlow用于所有“张量运算”。在这种情况下,张量不是什么稀奇古怪的东西。这是一个多维数组。

要安装TensorFlow,只需执行以下操作:

pip install --upgrade tensorflow

随着深度学习库的发布,出现了更高级的API类库,它们位于像TensorFlow这样的深度学习库之上,这使得构建、测试和调整模型更加简单。其中一个很容易成为最流行的库是Keras。

Keras变得如此流行,以至于它现在是一个超级集,现在包含在TensorFlow发行版中!如果您以前熟悉Keras,仍然可以使用它,但现在可以使用tensorflow.keras叫它。同样,如果您找到使用Keras的示例代码,也可以与TensorFlow版本的Keras一起使用。事实上,你可以做这样的事情:

import tensorflow.keras as keras
在本教程中,我将使用TensorFlow版本1.10。你可以找出你的版本:

import tensorflow as tf

print(tf.version)
1.10.0
一旦我们导入了TensorFlow,我们就可以开始准备我们的数据,对其进行建模,然后进行培训。为了简单起见,我们将使用最常见的“hello world”示例进行深入学习,这是mnist数据集。这是一个手写体数字的数据集,从0到9,是这些手写数字的28x28张图像。我们还将展示一个使用外部数据的示例,但就目前而言,让我们加载该数据:

mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
当您使用您自己收集的数据时,很可能不会很好地打包它,您将在这个步骤上花费更多的时间和精力。但是,现在,喔!

这里到底有什么?我们来个高峰吧。

所以x_train数据就是“特征”。在这种情况下,特征是这些数字0-9的28x28图像的像素值。这个y_train标签是0,1,2,3,4,5,6,7,8还是9?

这些变量的测试变体是我们将要使用的“样本外”示例。这些是我们的数据中的例子,我们将把它们放在一边,为测试模型保留它们。

神经网络对数据的拟合能力非常强,以至于它们通常会过度拟合数据。我们真正的希望是,神经网络不只是记住我们的数据,而是“概括”并学习与之相关的实际问题和模式。

让我们看看这些实际数据:

print(x_train[0])
[[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 3 18 18 18 126 136
175 26 166 255 247 127 0 0 0

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值