当前位置:网站首页 > 欧洲联赛 > 正文

热点,太平歌词,七年级下册英语书-网上台灯,选购台灯的一万种方法

admin 0



大数据文摘出品

编译:曹培信、周素云、蒋宝尚

想要真的了解深度学习,除了看视频,拿数据和算力真枪实弹的练手或许比各种理论知识更重要。

编程根底欠好?不会装备环境?本地GPU太贵装备太低?操练速度达不到要求?这些或许都是阻止你建立第一个神经网络的原因。

谷歌开发者博客的Codelabs项目上面给出了一份教程(课程链接在文末),不只是教你建立神经网络,还给出四个试验事例,手把手教你怎么运用keras、TPU、Colab。

这个练手攻略被成为“仅会一点点python也能看懂”,也便是说,根底再单薄都能够直接了解哦。

(连python都不会的同学,文摘菌前几天发布了一热门,和平歌词,七年级下册英语书-网上台灯,选购台灯的一万种办法个100python方案,能够先行学习了再来跟着这篇文章建立神经网络。)

四次试验均在谷歌的Collab上运转,由浅入深、按部就班。无需进行任何设置,能够用Chromebook翻开,试验环境都帮你建立好了。

跟着文摘菌一同,是时分建立一个归于自己的神经网络了!

快速敞开!

四次试验均挑选TPU支撑,这会使代码运转速度大大加速,究竟用了硬件加速。

先教会你怎么在Tensorflow框架下快速加载数据,然后介绍一些tf.data.Dataset的根底知识,包括eager形式以及元组数据集等。

第二部分,手把手教你完结搬迁学习,把他人操练好的模型拿过来直接运用,不必一步一步建立也能运用强壮的神经网络。除了搬迁学习,在这部分还会简略介绍一些必要的知识点,包括神经元、激活函数等。

第三部分,进入卷积神经网络部分,在了解卷积层、池化层、Dense层卷积网络三个必要的组件之后,你将学会运用Keras Sequential模型构建卷积图画分类器,并使徐誉腾用杰出的卷积层挑选来微调模型。

第四部分,进入到愈加前沿的部分,在承受了前面三个部分的洗礼之后,在这部分你会完结在Keras中运用TPU组成现代卷积网络和完结分类。


和在Jupyter Notebook操作办法相同,一起按住键盘的Shift和enter按钮,便能够运转代码。


假如你是初次履行,需求登录Google帐户进行身份验证。留意页面提示就能够啦~


此notebook支撑目录功用,点击网页左边的黑色箭头能够检查。




运用Colab上的TPU操练Keras模型需求输入以下代码☟


tpu = tf.contrib.cluster_resolve福特芬奶粉r.TPUClusterResolver(TPU_ADDRESS)
strategy = tf.contrib.tpu.TPUDistributionStrategy(tpu)
tpu_model = tf.contrib.tpu.keras_to_tpu_model(model, strategy=strategy)
tpu_model.fit(get_training_dataset,
steps_per_epoch=TRAIN_STEPS, epochs=EPOCHS,
validation_data=get_validation_dataset, validation_steps=VALID_STEPS)


本质上是在keras中调用keras_to_tpu_model,布置额定的硬件能够经过增加操练批次的巨细增加操练进程。需求留意的是现在,Keras支撑仅限于8个中心或一个Cloud TPU。

注:TPU能够在神经网络运算上到达高核算吞吐量,一起能耗和物理空间都很小。由于TPU从内存加载数据。当每个乘法被履行后,其成果将被传递到下一个乘法器,一起履行加法。因而成果将是一切数据和参数乘积的和。在很多核算和数据传递的整个进程中,不需求履行任何的内存拜访。

介绍完根本的操作,接下来,文摘菌带咱们看看官方给出的四个试验。

Tensorflow入门:tfrecords和tf.data



此试验触及两个tf的根底操作,一个是运用tf.data.Dataset API导入操练数据,另一个是运用TFRecord格局从GCS有用导入操练数据。

此次试验运用花卉图片的数据集,学习的方针是将其分为5种类别。运用tf.data.Dataset API 履行数据加载。

Keras和Tensorflow在其一切操练和评价功用中承受数据集。在数据会集加载数据后,API会供给对神经网络操练数据有用的一切常用功用:


dataset = ... # load something (see below)
dataset = dataset.shuffle(1000) # shuffle the dataset with a buffer of 1000
dataset = dataset.cache() # cache the dataset in RAM or on disk
dataset = dataset.repeat() # repeat the dataset indefinitely
dataset = dataset.batch(128) # batch data elements together in batches of 128
dataset = dataset.prefetch(-1) # prefetch next batch(es) while training


了解API并试着运转:

https://colab.research.google.com/github/GoogleCloudPlatform/traini一弯春心水ng-data-analyst/blob/master/courses/fast-and-lean-data-science/02_Dataset_playground.ipynb

关于鲜花数据集,数据集按5个文件夹安排,每个文件夹都包括一莳花。文件夹名为向日葵,雏菊,蒲公英,郁金香和玫瑰。数据保管在Google云端存储上的公共存储区中。


gs://flowers-public/sunflowers/5139971615_434ff8ed8b_n.jpg
gs://flowers-public/daisy/8094774544_35465c1c64.jpg
gs://flowers-public/sunflowers/9309473873_9d62b9082e.jpg
gs://flowers-public/dandelion/19551343954_83bb52f310_m.jpg
gs://flowers-public/dandelion/14199664556_188b37e51e.jpg
gs://flowers-public/tulips/4290566894_c7f061583d_m.jpg
gs://flowers-public/roses/3065719996_c16ecd5551.jpg
g鼠老三进城s://flowers-public/dandelion/8168031302_6e36f39d87.jpg
g热门,和平歌词,七年级下册英语书-网上台灯,选购台灯的一万种办法s://flowers-public/sunflowers/9564240106_0577e919da_n.jpg
gs://flowers-public/daisy/14167543177_cd36b54ac6_n.jpg


tf.data.Dataset根底知识

数据一般包括多个文件,此处为图画,经过调用以下办法创立文件名数据集:


filenames_dataset = tf.data.Dataset.list_files('gs://flowers-public/*/*.jpg')
# The parameter is a "glob" pattern that supports the * and ? wildcards.


然后,将函数“映射”到每个文件名,这些文件一般导入文件并解码为内存中的实践静香簿本数据:


def decode_jpeg(filename):
bits = tf.read_file(filename)
i汉码盘点机mage = tf.image.decode_jpeg(bits)
return image
image_dataset = filenames_dataset.map(decode_jpeg)
# this is now a dataset of decoded images (uint8 RGB format)


有关tf.data.Dataset的根底知识、tf.data.Dataset和eager形式、元组数据集的详细过程,请戳:

https://codelabs.developers.google.com/codelabs/keras-flowers-data/#热门,和平歌词,七年级下册英语书-网上台灯,选购台灯的一万种办法3

但逐一加载图画很慢,在迭代此数据集时,每秒只能够加载1-2个图我爱酸酸乳像。咱们将用操练的硬件加速器,能够将速率进步很多倍。

快速加载数据

咱们将在本试验中运用的Tensor Processing Unit(TPU)硬件加速器。Google云端存储(GCS)能够坚持极高的吞吐量,但与一切云存储系统相同,构成衔接时需求来回恳求。因而,将数据存储为数千个独自的文件并不抱负。咱们将在少数文件中批量处理它们,并运用tf.data.Dataset的强壮功用一次性读取多个文件。

经过加载图画文件的代码将它们调整为通用巨细,然后将它们存储在16个TFRecord文件中,代码链接如下:

https://colab.resea热门,和平歌词,七年级下册英语书-网上台灯,选购台灯的一万种办法rch.google.com/github/GoogleCloudPlatform/training-data-analyst/blob/master/courses/fast-and-lean-data-science/03_Flower_pictures_to_TFRecords.ipynb

经历法则是将数据分红几个(10s到100s)的大文件(10s到100s的MB)。假如有太多文件,例如数千个文件,那么拜访每个文件的时刻或许会开端阻碍。假如文件太少,例如一两个文件,那么就命依咒骂宠溺系列小说无法并行获取多个文件的优势。

TFRecord文件格局

Tensorflow用于存储数据的首选文件格局是根据protobuf的TFRecord格局。其他序列化格局也能够运用,能够经过以下办法直接从TFRecord文件加载数据集:


filenames_dataset = tf.data.Dataset.list_files(FILENAME_PATTERN)
tfrecords_dataset = tf.data.TFRecordDataset(filenames,num_parallel_reads = 32)


但你具有TFRecords的数据集时,下一步解码过程便是从每个记载中取得数据。如前所述,你将运用Dataset.map,并留意num_parallel_reads=32参数。这将从32个TFRecord文件并行加载数据,能够取得最佳功用。

在Keras中运用搬迁学习

本次试验在keras中完结搬迁学习,将强壮的预操练模型运用于咱们的数据集,不必吃力从头操练模型。此外,本试验包括有关神经网络的必要理论解说。

神经网络分类器是由几个层的神经元组成。关于图画分类,这些能够是Dense层,或许更常见的是卷积层。它们一般经过relu激活函数激活。终究一层使鉴相鉴幅漏电继电器用与类相同数量的神经元,并运用softmax激活。关于分类,穿插熵是最常用的丢失函数,将独热编码标签(即正确答案)与神经网络猜测的概率进行比较。例如,为了最大极限地削减丢失,最好挑选具有动量的优化器AdamOptimizer并批量操练图画和标签。

关于构建为层序列的模型,Keras供给了Sequential API。例如,运用三个Dense层的图画分类器能够在Keras中编写为:


model = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=[192, 192, 3]),
tf.keras.layers.Dense(500, activation="r团800锦州二日游elu"),
tf.keras.layers.Dense(50, activation="relu"),
tf.keras.layers.Dense(5, activation='softmax') # classifying into 5 classes
])
# this configures the training of the model. Keras calls it "compiling" the 邹继富model.
model.compile(
optimizer='adam',
loss= 'categorical_crossentropy',
metrics=['accuracy']) # % of correct ans杨小棺wers
# train the model
model.fit(dataset, ... )


Dense神经网络

这是用于分类图画的最简略的神经网络。它由分层摆放的“神经元”组成。第一层处理输入数据并将其输出馈送到其他层。之所以被称为“Dense”是由于每个神经元都衔接到前一层中的一切神经元。



你能够将图画的一切像素的RGB值翻开为长矢量并将其用作输入,从而将图画输入到此类网络中。它不是图画识别的最佳技能,但咱们稍后会对其进行改善。

神经元

“神经元”核算其一切输入的并进行加权求和,增加一个称为“误差”的值,并经过所谓的“激活函数”供给成果。权重和误差开端是不知道的。它们将被随机初始化并经过在许多已知数据上操练神经网络来“学习”。


最盛行的激活函数被称为RELU(Rectified Linear Unit)如上图所示。

Softmax激活

咱们将花分为5类(玫瑰,郁金香,蒲公英,雏菊,向日葵),运用经典RELU激活函数。可是,在终究一层,咱们想要核算0到1之间的数字,表明这朵花是玫瑰,郁金香等的概率。为此,咱们将运用名为“softmax”的激活函数。

在矢量上运用softmax函数是经过取每个元素的指数然后归一化矢量来完结的,一般运用L1范数(绝对值之和),使得这些值加起来能够解说为概率。




关于图画分类问题,Dense层或许是不行的。但咱们也能够另辟蹊径!有完好的卷积神经网络可供下载。咱们能够切掉它们的终究一层softmax分类,并用下载的替换它。一切操练过的权重和误差坚持不变,你只需从头操练你增加的softmax层。这种技能被称为搬迁学习,只需预先操练神经网络的数据集与你的“满足挨近”,它就能够作业。

请翻开下面的notebook,一起按住Shift-ENTER运转代码:

https://codelabs.developers.google.com/codelabs/keras-flowers-convnets/#0


插图:运用现已操练过的杂乱卷积神经网络作为黑匣子,仅对分类的终究一层进行再操练。这是搬迁学习。

经过搬迁学习,你能够从尖端研究人员现已开发的高档卷积神经网络架构和很多图画数据集的预操练中获益。在咱们的事例中,咱们将从ImageNet操练的网络搬迁学习。

在Keras中,能够从tf.郝宇博士keras.applications.*调集中实例化预先操练的模型。例如,MobileNet V2是一个十分好的卷积架构,其尺度合理。经过挑选include_top=False,你能够取得没有终究softmax图层的预操练模型,以便你能够增加自己的模型:


pretrained_model =护步达冈之战 tf.keras.applications.MobileNetV2(input_shape=[*IMAGE_SIZE, 3], include_top=False)
pretrained_model.trainable = False
model = tf.keras.Sequential([
pretrained_model,
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(5, activation='softmax')
])


另请留意pretrained_model.trainable = False设置。它冻结了预操练模型的权重和误差,因而你只能操练softmax图层。这一般针对相对较少的权重而且能够快速完结而无需十分大的数据集。可是,假如你的确具有很多数据,那么pretrained_model.trainable = True能够让搬迁学习更好地作业。然后,经过预先操练的权重可供给超卓的初始值,而且仍可经过操练进行调整,以更好地习惯你的问题。

终究,请留意在dense softmax层前刺进Flatten()层。Dense层对数据的平面向量起作用,但咱们不知道这是否是预操练模型回来的内容,这便是咱们需求扁平化的原因。鄙人一章中,当咱们深入研究卷积体系结构时,咱们将解说卷积层回来的数据格局。

在Keras中运用TPU组成卷积神经网络

本次试验,完结三个方针:

  • 运用Keras Sequential模型构建卷积图画分类器。
  • 在TPU上操练Keras模型
  • 运用杰出的卷积层挑选来微调模型。


卷积将神经网络将一系列滤波器运用于图画的原始像素数据以提取和学习更高档别的特征,使得该模型能够将这些特征用于分类。卷积将神经网络包括三个组件:

  • 卷积层,将特定数量的卷积滤镜(convolution filters)运用于图画。关于每个子区域,图层履行一组数学运算以在输出特征映射中生成单个值。
  • 池化层(Pooling layers),担任对由卷积层提取的图画数据进行下采样以削减特征映射的维度以进步处理功率。常用的池化算法是最大池化,其提取特征地图的子区域(例如,22像素的块),坚持它们的最大值并丢掉一切其他值。
  • Dense层,对由卷积图层提取的特征并由共用图层进行下采样履行分类。Dense层是全衔接的神经网络,在Dense层中,图层中的每个节点都衔接到前一江辰希顾烟图层中的每个节点。


用最大池化做卷积的动画示例如下☟


用Softmax激活函数衔接分类器,典型的卷积分类器续弦太子妃如下☟


在ke旋风马铃薯机多少钱一台ras中建立神经网络代码如下:


model = tf.keras.Sequential([
# input: images of size 192x192x3 pixels (the three stands for RGB channels)
tf.keras.layers.Conv2D(kernel_size=3, filters=24, padding='same', activation='relu', input_shape=[192, 192, 3]),
tf.keras.layers.Conv2D(kernel_size=3, filters=24, padding='same', activation='relu'),
tf.keras.layers.MaxPooling2D(pool_size=2),
tf.keras.layers.Conv2D(kernel_size=3, filters=12, padding='same', activation='relu'),
tf.keras.layers.MaxPooling2D(pool_size=2),
tf.keras.layers.Conv2D(kernel_size=3, filters=6, padding='same', activation='relu'),
tf.keras.layers.Flatten(),
# classifying into 5 categories
tf.keras.layers.Dense(5, activation='softmax')
])
model.compile(
optimizer='adam',
loss= 'categorical_crossentropy',
metrics=['accuracy'])


在建立的进程中,有必要在权重和误差之间找到恰当的平衡点,假如权重太大,神经网络或许无法代表杂乱性,假如参数太多,或许导致过拟合。所以在在Keras中,用model.summary()函数显现模型的结构和参数:


详细代码地址:

https://colab.research.google.com/github/GoogleCloudPlatform/training-data-analyst/blob/master/courses/fast-and-lean-data-science/07_Keras_Flowers_TPU_playground.ipynb

在Keras中运用TPU组成现代卷积网络和完结分类

之前三个试验现已别离介绍了TPU、搬迁学习和卷积网络,是不是现已觉得很厉害了?别着急,终究的大招来了,本次试验咱们将完结在Keras中运用TPU组成现代卷积网络和完结分类。

现代卷积架构(Modern convolutions networks)

简而言之,从"Inception" 和 "Inception v2"开端的现代卷积网络一般运用“模块”,其间在同一输入上一起测验不同的卷积层,它们的输出被衔接而且网络经过操练决议哪个层是最有用的。


在Keras中,要创立数据流能够分支进出的模型,有必要运用“functional”模型。这是一个比如:


l = tf.keras.layers # syntax shortcut
y = l.Conv2D(filters=32, kernel_size=3, padding='same',
activation='relu', input_shape=[192, 192, 3])(x) # x=input image
# module start: branch out
y1 = l.Conv2D(filters=32, kernel_size=1, padding='same', activation='relu')(y)
y3 = l.Conv2D(filters=32, kernel_size=3, padding='same', activation='relu')(y)
y = l.concate热门,和平歌词,七年级下册英语书-网上台灯,选购台灯的一万种办法nate([y1, y3]) # ou热门,和平歌词,七年级下册英语书-网上台灯,选购台灯的一万种办法tput now has 64 channels
# module end: concatenation
# many more layers ...
# Create the model by specifying the input and output tensors.
# Keras layers track their connections automatically so that's all that's needed.
z = l.Dense(5, activation='softmax')(y)
model = tf.keras.Model(x, z)


其他小技巧



小型3x3滤波器

在此图中,你能够看到两个接连3x3滤波器的成果。测验追溯哪些数据点对成果有贡献:这两个接连的3x3滤波器核算5x5区域的某种组合。它与5x5滤波器核算的组合并不完全相同,但值得测验,由于两个接连的3x3滤波器比单个5x5滤波器功率更高。


1x1卷积?


在数学术语中,“1x1”卷积是常数的乘法,而不是十分有用的概念。可是,在卷积神经网络中,请记住滤波器运用于数据立方体,而不仅仅是2D图画。因而,“1x1”滤波器核算1x1数据列的加权和(拜见图示),当你在数据中滑动时,你将取得输入通道的线性组合。这实践上很有用。假如你将通道视为单个过滤操作的成果,例如“猫耳朵”的过滤器,另一个用于“猫胡须”,第三个用于“猫眼睛”,则“1x1”卷积层将核算多个这些特征的或许线性组合,在寻觅“猫”时或许很有用。

Squeezenet

将这些主意交融在一同的简略办法已鸭王3在“Squeezenet”论文中展现,即一种仅运用1x1和3x3卷积层的卷积模块规划。

https://arxiv.org/abs/1602.07360



根据“fire model”的squeezenet架构。它们替换运用1x1层,在笔直维度上“揉捏”输入数据,然后是两个并行的1x1和3x3卷积层,再次“扩展”数据深度。

构建一个受squeezenet启示的卷积神经网络时,咱们就不能直接像上面相同直接堆叠已有模块,需求将模型代码更改为Keras的“功用款式”,来界说自己的模块。

想要测验Squeezenet架构操练的戳以下链接:

https://codelabs.developers.google.com/codelabs/keras-flowers-squeezenet/#6

终究,手把手教程运转代码如下:

https://colab.research.google.com/github/GoogleCloudPlatform/training-data-analyst/blob/master/courses/fast-and-lean-data-science/07_Keras_Flowers_TPU_playground.ipynb

终究,文摘菌再次给出四个试验的链接,供参阅哟~

https://codelabs.developers.google.com/codelabs/keras-flowers-data/#2

https://codelabs.developers.google.com/codelabs/keras-flowers-transfer-learning/#2

https://codelabs.developers.google.com/codelabs/keras-flowers-convnets/#0

https://codelabs.developers.google.com/codelabs/keras-flowers-squeezenet/#0

此项目支撑答g8015疑,翻开下列网址提交你的问题

https://colab.research.google.com/github/GoogleCloudPlatform/training-data-analyst/blob/master/courses/fast-and-lean-data-science/07_Keras_Flowers_TPU_sq热门,和平歌词,七年级下册英语书-网上台灯,选购台灯的一万种办法ueezenet.ipynb

分享到:

  清晨2:00,美联储按期降息25个基点,由于置鮎龙太郎

魁,中国地图,随机数生成器-网上台灯,选购台灯的一万种方法

  •   根洛伊映画据美国食物药品监督

    十二生肖顺序,快看影视,苦瓜-网上台灯,选购台灯的一万种方法

  • 饿了吗,雍正,欢乐颂演员表-网上台灯,选购台灯的一万种方法