【TensorFlow2.0】以后我们再也离不开Keras了?

本文介绍了TensorFlow2.0中Keras高级API的使用。Keras是构建和训练深度学习模型的高阶API,其API包含Modules、Class、Functions三大块。文中详细讲解了各部分常见模块的使用方法,还给出了简单的图像分类模型实例,强调学好TensorFlow2.0需掌握Keras。
部署运行你感兴趣的模型镜像

TensorFlow2.0 Alpha版已经发布,在2.0中最重要的API或者说到处都出现的API是谁,那无疑是Keras。因此用过2.0的人都会吐槽全世界都是Keras。今天我们就来说说Keras这个高级API。

 作者 | 汤兴旺

 编辑 | 汤兴旺

1 Keras概述

在TensorFlow2.0中,Keras是一个用于构建和训练深度学习模型的高阶 API。因此如果你正在使用TensorFow2.0,那么使用Keras构建深度学习模型是您的不二选择。在Keras API中总共有如下三大块:

640?wx_fmt=png

在Modules中有构建训练模型各种必备的组件,如激活函数activations、损失函数losses、优化器optimizers等;在Class中有Sequential和Model两个类,它们用来堆叠模型;在Functions中有Input()函数,它用来实例化张量。

因此若您使用的深度学习框架是TensorFlow,而且是2.0版本,那么你就不可能不使用tensorflow.keras。这也就是使用过TensorFlow2.0版本的都在吐槽全世界都是Keras的原因。

640?wx_fmt=gif

2 Modules

通过上面的介绍,我们知道在Modules中有activations、losses、optimizers等构建训练模型时各种必备的组件。下图就是Modules中有所的模块。

640?wx_fmt=png

下面我们详细说说里面最常见的几个模块应该如何使用。

1. 常用的数据集(datasets)


在TensorFlow2.0中,常用的数据集需要使用tf.keras.datasets来加载,在datasets中有如下数据集。

640?wx_fmt=png

对于上图中的数据集我们可以像下面这样加载

(train_images,train_labels),(test_images,test_labels)= keras.datasets.fashion_mnist.load_data()

当然我们平时使用的数据集肯定不在于此,这些数据集都是些最基础的数据集。对于自己的数据如何读取,请期待我们下次的分享。

2. 神经网络层(Layers)


在构建深度学习网络模型时,我们需要定制各种各样的层结构。这时候就要用到layers了,下图是TensorFlow2.0中部分层,它们都是Layer的子类。

640?wx_fmt=png

那么我们如何使用layer来构建模型呢?方法如下:

from tensorflow.keras import layers

layers.Conv2D()

layers.MaxPool2D()

layers.Flatten()

layers.Dense()

3. 激活函数(Optimizers)


在构建深度学习网络时,我们经常需要选择激活函数来使网络的表达能力更强。下面将介绍TensorFlow2.0中的激活函数及它们应该在TensorFlow2.0中该如何使用。下图是TensorFlow2.0中部分激活函数:

640?wx_fmt=png

from tensorflow.keras import layers

layers.Conv2D(...,activation='relu')

layers.Dense(...,activation='softmax')

4. 优化器(activations)


通常当我们准备好数据,设计好模型后,我们就需要选择一个合适的优化器(Optimizers)对模型进行优化。下面将介绍TensorFlow2.0中的优化器及他们应该在TensorFlow2.0中该如何使用。下图是TensorFlow2.0中所有的优化器,它们都是Optimizer的子类。

640?wx_fmt=png

对于优化器的使用你可以像下面这样使用:

optimizers = tf.keras.optimizers.Adam()

optimizers = tf.keras.optimizers.SGD()

...


5. 损失函数(Losses)


我们知道当我们设计好模型时我们需要优化模型,所谓的优化就是优化网络权值使损失函数值变小,但是损失函数变小是否能代表精度越高呢?那么多的损失函数,我们又该如何选择呢?接下来我们了解下在TensorFlow2.0中如何使用损失函数。下图是TensorFlow2.0中所有的损失函数,它们都是Loss的子类。

640?wx_fmt=png

对于损失函数的使用你可以像下面这样使用:

loss = tf.keras.losses.SparseCategoricalCrossentropy()

loss = tf.keras.losses.mean_squared_error()

...

3 Class

在Class中有Sequential和Model两个类,它们分别是用来堆叠网络层和把堆叠好的层实例化可以训练的模型。

640?wx_fmt=png


1. Model


对于实例化Model有下面两种方法

(1).使用keras.Model API

import tensorflow as tftf.keras.Model(inputs=inputs, outputs=outputs)

(2).继承Model类

import tensorflow as tfclass MyModel(tf.keras.Model):


2. Sequential


在TensorFlow2.0中,我们可以使用Sequential模型。具体方式如下:

model = keras.Sequential()

model = model.add(layers.Conv2D(input_shape=(x_train.shape[1], x_train.shape[2],x_train.shape[3]),filters=32,kernel_size=(3,3), strides=(1,1), padding='valid',activation='relu'))

model.add(layers.MaxPool2D(pool_size=(2,2)))

model.add(layers.Flatten())model.add(layers.Dense(32,activation='relu'))

model.add(layers.Dense(10, activation='softmax'))

model.compile(optimizer=keras.optimizers.Adam(),loss=keras.losses.SparseCategoricalCrossentropy(),metrics=['accuracy'])

4 Functions

在Functions中,有一个Input函数,其用来实例化Keras张量。对于Input函数,它有如下参数

tf.keras.Input(

具体方法如下:

x = Input(shape=(32,))

5 简单的图像分类模型实例

#1导入相应的API

import tensorflow as tf

from tensorflow import keras

from tensorflow.keras import layers

#2加载数据

(train_images,train_labels),(test_images,test_labels)= keras.datasets.fashion_mnist.load_data()

#3构建网络

model = keras.Sequential()

model = model.add(layers.Conv2D(input_shape=(x_train.shape[1], x_train.shape[2],x_train.shape[3]),filters=32,kernel_size=(3,3), strides=(1,1), padding='valid',activation='relu'))

model.add(layers.MaxPool2D(pool_size=(2,2)))

model.add(layers.Flatten())model.add(layers.Dense(32,activation='relu'))

model.add(layers.Dense(10, activation='softmax'))

model.compile(optimizer=keras.optimizers.Adam(),loss=keras.losses.SparseCategoricalCrossentropy(),metrics=['accuracy'])

#4模型显示

model.summary()

#5模型训练

model_train=model.fit(x_train, y_train, batch_size=64, epochs=5, validation_split=0.1)

总结

在本讲中,我们简单的了解了TensorFlow2.0中高级API Keras是如何使用的,我们可以看到Keras真的是无处不在,如果你想学好TensorFlow2.0,那么你必须掌握好Kears。

下期预告:如何读取自己的数据集及数据的使用。

最近直播

640?wx_fmt=png

今日看图猜技术

640?wx_fmt=png

网络结构

640?wx_fmt=png

更多精彩内容请关注知乎专栏《有三AI学院》

640?wx_fmt=png

转载文章请后台联系

侵权必究

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

往期精选

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言有三

三人行必有AI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值