一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

【TensorFlow2.0】以后我們再也離不開Keras了?

 有三AI 2020-11-27

TensorFlow2.0 Alpha版已經(jīng)發(fā)布,在2.0中最重要的API或者說到處都出現(xiàn)的API是誰,那無疑是Keras。因此用過2.0的人都會吐槽全世界都是Keras。今天我們就來說說Keras這個(gè)高級API。

 作者 | 湯興旺

 編輯 | 湯興旺

1 Keras概述

在TensorFlow2.0中,Keras是一個(gè)用于構(gòu)建和訓(xùn)練深度學(xué)習(xí)模型的高階 API。因此如果你正在使用TensorFow2.0,那么使用Keras構(gòu)建深度學(xué)習(xí)模型是您的不二選擇。在Keras API中總共有如下三大塊:

在Modules中有構(gòu)建訓(xùn)練模型各種必備的組件,如激活函數(shù)activations、損失函數(shù)losses、優(yōu)化器optimizers等;在Class中有Sequential和Model兩個(gè)類,它們用來堆疊模型;在Functions中有Input()函數(shù),它用來實(shí)例化張量。

因此若您使用的深度學(xué)習(xí)框架是TensorFlow,而且是2.0版本,那么你就不可能不使用tensorflow.keras。這也就是使用過TensorFlow2.0版本的都在吐槽全世界都是Keras的原因。

2 Modules

通過上面的介紹,我們知道在Modules中有activations、losses、optimizers等構(gòu)建訓(xùn)練模型時(shí)各種必備的組件。下圖就是Modules中有所的模塊。

下面我們詳細(xì)說說里面最常見的幾個(gè)模塊應(yīng)該如何使用。

1. 常用的數(shù)據(jù)集(datasets)

在TensorFlow2.0中,常用的數(shù)據(jù)集需要使用tf.keras.datasets來加載,在datasets中有如下數(shù)據(jù)集。

對于上圖中的數(shù)據(jù)集我們可以像下面這樣加載

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

當(dāng)然我們平時(shí)使用的數(shù)據(jù)集肯定不在于此,這些數(shù)據(jù)集都是些最基礎(chǔ)的數(shù)據(jù)集。對于自己的數(shù)據(jù)如何讀取,請期待我們下次的分享。

2. 神經(jīng)網(wǎng)絡(luò)層(Layers)

在構(gòu)建深度學(xué)習(xí)網(wǎng)絡(luò)模型時(shí),我們需要定制各種各樣的層結(jié)構(gòu)。這時(shí)候就要用到layers了,下圖是TensorFlow2.0中部分層,它們都是Layer的子類。

那么我們?nèi)绾问褂胠ayer來構(gòu)建模型呢?方法如下:

from tensorflow.keras import layers

layers.Conv2D()

layers.MaxPool2D()

layers.Flatten()

layers.Dense()

3. 激活函數(shù)(Optimizers)

在構(gòu)建深度學(xué)習(xí)網(wǎng)絡(luò)時(shí),我們經(jīng)常需要選擇激活函數(shù)來使網(wǎng)絡(luò)的表達(dá)能力更強(qiáng)。下面將介紹TensorFlow2.0中的激活函數(shù)及它們應(yīng)該在TensorFlow2.0中該如何使用。下圖是TensorFlow2.0中部分激活函數(shù):

from tensorflow.keras import layers

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

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

4. 優(yōu)化器(activations)

通常當(dāng)我們準(zhǔn)備好數(shù)據(jù),設(shè)計(jì)好模型后,我們就需要選擇一個(gè)合適的優(yōu)化器(Optimizers)對模型進(jìn)行優(yōu)化。下面將介紹TensorFlow2.0中的優(yōu)化器及他們應(yīng)該在TensorFlow2.0中該如何使用。下圖是TensorFlow2.0中所有的優(yōu)化器,它們都是Optimizer的子類。

對于優(yōu)化器的使用你可以像下面這樣使用:

optimizers = tf.keras.optimizers.Adam()

optimizers = tf.keras.optimizers.SGD()

...

5. 損失函數(shù)(Losses)

我們知道當(dāng)我們設(shè)計(jì)好模型時(shí)我們需要優(yōu)化模型,所謂的優(yōu)化就是優(yōu)化網(wǎng)絡(luò)權(quán)值使損失函數(shù)值變小,但是損失函數(shù)變小是否能代表精度越高呢?那么多的損失函數(shù),我們又該如何選擇呢?接下來我們了解下在TensorFlow2.0中如何使用損失函數(shù)。下圖是TensorFlow2.0中所有的損失函數(shù),它們都是Loss的子類。

對于損失函數(shù)的使用你可以像下面這樣使用:

loss = tf.keras.losses.SparseCategoricalCrossentropy()

loss = tf.keras.losses.mean_squared_error()

...

3 Class

在Class中有Sequential和Model兩個(gè)類,它們分別是用來堆疊網(wǎng)絡(luò)層和把堆疊好的層實(shí)例化可以訓(xùn)練的模型。

1. Model

對于實(shí)例化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中,有一個(gè)Input函數(shù),其用來實(shí)例化Keras張量。對于Input函數(shù),它有如下參數(shù)

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 簡單的圖像分類模型實(shí)例

#1導(dǎo)入相應(yīng)的API

import tensorflow as tf

from tensorflow import keras

from tensorflow.keras import layers

#2加載數(shù)據(jù)

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

#3構(gòu)建網(wǎng)絡(luò)

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模型訓(xùn)練

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

總結(jié)

在本講中,我們簡單的了解了TensorFlow2.0中高級API Keras是如何使用的,我們可以看到Keras真的是無處不在,如果你想學(xué)好TensorFlow2.0,那么你必須掌握好Kears。

下期預(yù)告:如何讀取自己的數(shù)據(jù)集及數(shù)據(jù)的使用。

最近直播

今日看圖猜技術(shù)

網(wǎng)絡(luò)結(jié)構(gòu)

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲一区二区三在线播放| 亚洲国产天堂av成人在线播放| 国产黑人一区二区三区| 免费观看一区二区三区黄片| 国产av一区二区三区麻豆| 污污黄黄的成年亚洲毛片| 久久国产人妻一区二区免费| 日韩1区二区三区麻豆| 亚洲一二三四区免费视频| 日本成人三级在线播放| 国产精品午夜福利免费在线| 久久99热成人网不卡| 欧美日韩校园春色激情偷拍| 日本免费熟女一区二区三区| 欧美在线观看视频免费不卡| 亚洲日本加勒比在线播放| 久久亚洲午夜精品毛片| 国产精品成人又粗又长又爽| 午夜传媒视频免费在线观看| 日韩一区中文免费视频| 亚洲精品中文字幕无限乱码| 日本在线视频播放91| 日韩18一区二区三区| 亚洲天堂有码中文字幕视频| 中文字幕人妻av不卡| 草草视频福利在线观看| 久久99这里只精品热在线| 黑人巨大精品欧美一区二区区 | 中文字幕无线码一区欧美| 欧美国产日本高清在线| 久久本道综合色狠狠五月| 久久精品亚洲精品一区| 亚洲精品伦理熟女国产一区二区| 亚洲专区中文字幕视频| 免费特黄一级一区二区三区| 日韩精品人妻少妇一区二区| 熟妇人妻av中文字幕老熟妇| 日韩色婷婷综合在线观看| 久久国产精品亚州精品毛片| 久久精品中文字幕人妻中文| 一区二区三区日韩在线|