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

栏目: 数据库 · 发布时间: 5年前

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

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

作者 | 汤兴旺

编辑 | 汤兴旺

1 Keras概述

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

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

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

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

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

2 Modules

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

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

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

1. 常用的数据集(datasets)

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

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

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

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

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

2. 神经网络层(Layers)

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

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

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

from tensorflow.keras import layers

layers.Conv2D()

layers.MaxPool2D()

layers.Flatten()

layers.Dense()

3. 激活函数(Optimizers)

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

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

from tensorflow.keras import layers

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

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

4. 优化器(activations)

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

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

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

optimizers = tf.keras.optimizers.Adam()

optimizers = tf.keras.optimizers.SGD()

...

5. 损失函数(Losses)

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

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

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

loss = tf.keras.losses.SparseCategoricalCrossentropy()

loss = tf.keras.losses.mean_squared_error()

...

3 Class

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

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

1 . Model

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

(1).使用keras.Model API

import tensorflow as tf

inputs = tf.keras.Input(shape=(3,))

x=tf.keras.layers.Dense(4,activation=tf.nn.relu(inputs)

outputs=tf.keras.layers.Dense(5, activation=tf.nn.softmax)(x)

model= tf.keras.Model (inputs=inputs, outputs=outputs)

(2).继承Model类

import tensorflow as tf

class MyModel(tf.keras.Model):

def __init__(self):

super(MyModel, self).__init__()

self.dense1 = tf.keras.layers.Dense(4, activation=tf.nn.relu)

self.dense2 = tf.keras.layers.Dense(5, activation=tf.nn.softmax)

def call(self, inputs):

x = self.dense1(inputs)

return self.dense2(x)

model = MyModel()

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(

shape=None,

batch_size=None,

name=None,

dtype=None,

sparse=False,

tensor=None,

**kwargs

)

具体方法如下:

x = Input(shape=(32,))

y = Dense(16, activation='softmax')(x)

model = Model(x, y)

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。

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

最近直播

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

今日看图猜技术

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

网络结构

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

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

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

转载文章请后台联系

侵权必究

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


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Bulletproof Web Design

Bulletproof Web Design

Dan Cederholm / New Riders Press / 28 July, 2005 / $39.99

No matter how visually appealing or packed with content a Web site is, it isn't succeeding if it's not reaching the widest possible audience. Designers who get this guide can be assured their Web site......一起来看看 《Bulletproof Web Design》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具