0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用TensorFlow構(gòu)建和訓(xùn)練變分自動(dòng)編碼器

科技觀察員 ? 來(lái)源:allaboutcircuits ? 作者:亨利·安薩·福特久 ? 2022-05-05 16:57 ? 次閱讀

多年來(lái),我們已經(jīng)看到許多領(lǐng)域和行業(yè)利用人工智能AI) 的力量來(lái)推動(dòng)研究的邊界。數(shù)據(jù)壓縮和重建也不例外,人工智能的應(yīng)用可以用來(lái)構(gòu)建更強(qiáng)大的系統(tǒng)。

在本文中,我們將研究一個(gè)非常流行的 AI 用例,用于壓縮數(shù)據(jù)并使用自動(dòng)編碼器重建壓縮數(shù)據(jù)。

自動(dòng)編碼器應(yīng)用

自動(dòng)編碼器在機(jī)器學(xué)習(xí)領(lǐng)域引起了許多人的關(guān)注,這一事實(shí)通過(guò)自動(dòng)編碼器的改進(jìn)和幾種變體的發(fā)明變得顯而易見(jiàn)。他們?cè)谏窠?jīng)機(jī)器翻譯、藥物發(fā)現(xiàn)、圖像去噪等幾個(gè)領(lǐng)域取得了一些有希望的(如果不是最先進(jìn)的)結(jié)果。

自動(dòng)編碼器的組成部分

與大多數(shù)神經(jīng)網(wǎng)絡(luò)一樣,自編碼器通過(guò)反向傳播梯度來(lái)優(yōu)化一組權(quán)重——但自編碼器架構(gòu)與大多數(shù)神經(jīng)網(wǎng)絡(luò)架構(gòu)之間最顯著的區(qū)別是瓶頸。這個(gè)瓶頸是將我們的數(shù)據(jù)壓縮成較低維度的表示的一種手段。自編碼器的另外兩個(gè)重要部分是編碼器和解碼器。

將這三個(gè)組件融合在一起形成了一個(gè)“香草”自動(dòng)編碼器,盡管更復(fù)雜的自動(dòng)編碼器可能有一些額外的組件。

讓我們分別看一下這些組件。

編碼器

這是數(shù)據(jù)壓縮和重建的第一階段,它實(shí)際上負(fù)責(zé)數(shù)據(jù)壓縮階段。編碼器是一個(gè)前饋神經(jīng)網(wǎng)絡(luò),它接收數(shù)據(jù)特征(例如圖像壓縮中的像素)并輸出一個(gè)大小小于數(shù)據(jù)特征大小的潛在向量。

pYYBAGJzkXeABRf5AAG0JpivaWg198.png

為了使數(shù)據(jù)的重建具有魯棒性,編碼器在訓(xùn)練期間優(yōu)化其權(quán)重,以將輸入數(shù)據(jù)表示的最重要特征壓縮到小型潛在向量中。這確保了解碼器有足夠的關(guān)于輸入數(shù)據(jù)的信息來(lái)以最小的損失重建數(shù)據(jù)。

潛在向量(瓶頸)

自編碼器的瓶頸或潛在向量分量是最關(guān)鍵的部分——當(dāng)我們需要選擇它的大小時(shí),它變得更加關(guān)鍵。

編碼器的輸出為我們提供了潛在向量,并且應(yīng)該包含我們輸入數(shù)據(jù)的最重要的特征表示。它還用作解碼器部分的輸入,并將有用的表示傳播到解碼器進(jìn)行重建。

為潛在向量選擇更小的尺寸意味著我們可以用更少的輸入數(shù)據(jù)信息來(lái)表示輸入數(shù)據(jù)特征。選擇更大的潛在向量大小會(huì)淡化使用自動(dòng)編碼器進(jìn)行壓縮的整個(gè)想法,并且還會(huì)增加計(jì)算成本。

解碼器

這個(gè)階段結(jié)束了我們的數(shù)據(jù)壓縮和重建過(guò)程。就像編碼器一樣,這個(gè)組件也是一個(gè)前饋神經(jīng)網(wǎng)絡(luò),但它在結(jié)構(gòu)上看起來(lái)與編碼器有點(diǎn)不同。這種差異來(lái)自這樣一個(gè)事實(shí),即解碼器將一個(gè)比解碼器輸出更小的潛在向量作為輸入。

解碼器的功能是從與輸入非常接近的潛在向量生成輸出。

poYBAGJzkXiAIBTBAADc_yeQMFI477.png

訓(xùn)練自動(dòng)編碼器

通常,在訓(xùn)練自動(dòng)編碼器時(shí),我們將這些組件一起構(gòu)建,而不是獨(dú)立構(gòu)建。我們使用梯度下降或 ADAM 優(yōu)化器等優(yōu)化算法對(duì)它們進(jìn)行端到端訓(xùn)練。

損失函數(shù)

值得討論的自動(dòng)編碼器訓(xùn)練過(guò)程的一部分是損失函數(shù)。數(shù)據(jù)重建是一項(xiàng)生成任務(wù),與其他機(jī)器學(xué)習(xí)任務(wù)不同,我們的目標(biāo)是最大化預(yù)測(cè)正確類別的概率,我們驅(qū)動(dòng)我們的網(wǎng)絡(luò)產(chǎn)生接近輸入的輸出。

我們可以通過(guò)幾個(gè)損失函數(shù)來(lái)實(shí)現(xiàn)這個(gè)目標(biāo),例如 l1、l2、均方誤差等。這些損失函數(shù)的共同點(diǎn)是它們測(cè)量輸入和輸出之間的差異(即多遠(yuǎn)或相同),使它們中的任何一個(gè)成為合適的選擇。

自動(dòng)編碼器網(wǎng)絡(luò)

一直以來(lái),我們一直在使用多層感知器來(lái)設(shè)計(jì)我們的編碼器和解碼器——但事實(shí)證明,我們可以使用更專業(yè)的框架,例如卷積神經(jīng)網(wǎng)絡(luò) (CNN) 來(lái)捕獲更多關(guān)于輸入數(shù)據(jù)的空間信息圖像數(shù)據(jù)壓縮的情況。

令人驚訝的是,研究表明,用作文本數(shù)據(jù)自動(dòng)編碼器的循環(huán)網(wǎng)絡(luò)工作得非常好,但我們不打算在本文的范圍內(nèi)進(jìn)行討論。多層感知器中使用的編碼器-潛在向量-解碼器的概念仍然適用于卷積自動(dòng)編碼器。唯一的區(qū)別是我們?cè)O(shè)計(jì)了帶有卷積層的解碼器和編碼器。

所有這些自動(dòng)編碼器網(wǎng)絡(luò)都可以很好地完成壓縮任務(wù),但存在一個(gè)問(wèn)題。

我們討論過(guò)的網(wǎng)絡(luò)創(chuàng)造力為零。我所說(shuō)的零創(chuàng)造力的意思是他們只能產(chǎn)生他們已經(jīng)看到或接受過(guò)培訓(xùn)的輸出。

我們可以通過(guò)稍微調(diào)整我們的架構(gòu)設(shè)計(jì)來(lái)激發(fā)一定程度的創(chuàng)造力。結(jié)果被稱為變分自動(dòng)編碼器。

pYYBAGJzkXqAFBwqAACkczHl8WU685.png

變分自編碼器

變分自動(dòng)編碼器引入了兩個(gè)主要的設(shè)計(jì)變化:

我們沒(méi)有將輸入轉(zhuǎn)換為潛在編碼,而是輸出兩個(gè)參數(shù)向量:均值和方差。

一個(gè)稱為 KL 散度損失的附加損失項(xiàng)被添加到初始損失函數(shù)中。

變分自動(dòng)編碼器背后的想法是,我們希望我們的解碼器使用從由編碼器生成的均值向量和方差向量參數(shù)化的分布中采樣的潛在向量來(lái)重建我們的數(shù)據(jù)。

從分布中采樣特征給解碼器一個(gè)受控的空間來(lái)生成。在訓(xùn)練變分自動(dòng)編碼器后,每當(dāng)我們對(duì)輸入數(shù)據(jù)執(zhí)行前向傳遞時(shí),編碼器都會(huì)生成一個(gè)均值和方差向量,負(fù)責(zé)確定從哪個(gè)分布中對(duì)潛在向量進(jìn)行采樣。

平均向量決定了輸入數(shù)據(jù)的編碼應(yīng)該集中在哪里,方差決定了我們想要從中選擇編碼以生成真實(shí)輸出的徑向空間或圓。這意味著,對(duì)于相同輸入數(shù)據(jù)的每次前向傳遞,我們的變分自動(dòng)編碼器可以生成以均值向量為中心和方差空間內(nèi)的不同輸出變體。

相比之下,在查看標(biāo)準(zhǔn)自動(dòng)編碼器時(shí),當(dāng)我們嘗試生成網(wǎng)絡(luò)尚未訓(xùn)練的輸出時(shí),由于編碼器產(chǎn)生的潛在向量空間的不連續(xù)性,它會(huì)生成不切實(shí)際的輸出。

poYBAGJzkXuAT7IuAADf6jhOFU4891.png

現(xiàn)在我們對(duì)變分自動(dòng)編碼器有了一個(gè)直觀的了解,讓我們看看如何在 TensorFlow 中構(gòu)建一個(gè)。

用于變分自動(dòng)編碼器的 TensorFlow 代碼

我們將從準(zhǔn)備好數(shù)據(jù)集開(kāi)始我們的示例。為簡(jiǎn)單起見(jiàn),我們將使用 MNIST 數(shù)據(jù)集。

(train_images, _), (test_images, _) = tf.keras.datasets.mnist.load_data()

train_images = train_images.reshape(train_images.shape[0], 28, 28, 1).astype(‘float32’)

test_images = test_images.reshape(test_images.shape[0], 28, 28, 1).astype(‘float32’)

# Normalizing the images to the range of [0., 1.]

train_images /= 255.

test_images /= 255.

# Binarization

train_images[train_images 》= .5] = 1.

train_images[train_images 《 .5] = 0.

test_images[test_images 》= .5] = 1.

test_images[test_images 《 .5] = 0.

TRAIN_BUF = 60000

BATCH_SIZE = 100

TEST_BUF = 10000

train_dataset = tf.data.Dataset.from_tensor_slices(train_images).shuffle(TRAIN_BUF).batch(BATCH_SIZE)

test_dataset = tf.data.Dataset.from_tensor_slices(test_images).shuffle(TEST_BUF).batch(BATCH_SIZE)

Obtain dataset and prepare it for the task.

class CVAE(tf.keras.Model):

def __init__(self, latent_dim):

super(CVAE, self).__init__()

self.latent_dim = latent_dim

self.inference_net = tf.keras.Sequential(

tf.keras.layers.InputLayer(input_shape=(28, 28, 1)),

tf.keras.layers.Conv2D(

filters=32, kernel_size=3, strides=(2, 2), activation=‘relu’),

tf.keras.layers.Conv2D(

filters=64, kernel_size=3, strides=(2, 2), activation=‘relu’),

tf.keras.layers.Flatten(),

# No activation

tf.keras.layers.Dense(latent_dim + latent_dim),

self.generative_net = tf.keras.Sequential(

tf.keras.layers.InputLayer(input_shape=(latent_dim,)),

tf.keras.layers.Dense(units=7*7*32, activation=tf.nn.relu),

tf.keras.layers.Reshape(target_shape=(7, 7, 32)),

tf.keras.layers.Conv2DTranspose(

filters=64,

kernel_size=3,

strides=(2, 2),

padding=“SAME”,

activation=‘relu’),

tf.keras.layers.Conv2DTranspose(

filters=32,

kernel_size=3,

strides=(2, 2),

padding=“SAME”,

activation=‘relu’),

# No activation

tf.keras.layers.Conv2DTranspose(

filters=1, kernel_size=3, strides=(1, 1), padding=“SAME”),

@tf.function

def sample(self, eps=None):

if eps is None:

eps = tf.random.normal(shape=(100, self.latent_dim))

return self.decode(eps, apply_sigmoid=True)

def encode(self, x):

mean, logvar = tf.split(self.inference_net(x), num_or_size_splits=2, axis=1)

return mean, logvar

def reparameterize(self, mean, logvar):

eps = tf.random.normal(shape=mean.shape)

return eps * tf.exp(logvar * .5) + mean

def decode(self, z, apply_sigmoid=False):

logits = self.generative_net(z)

if apply_sigmoid:

probs = tf.sigmoid(logits)

return probs

return logits

這兩個(gè)代碼片段準(zhǔn)備了我們的數(shù)據(jù)集并構(gòu)建了我們的變分自動(dòng)編碼器模型。在模型代碼片段中,有幾個(gè)輔助函數(shù)來(lái)執(zhí)行編碼、采樣和解碼。

計(jì)算梯度的重新參數(shù)化

有一個(gè)我們尚未討論的重新參數(shù)化函數(shù),但它解決了我們的變分自動(dòng)編碼器網(wǎng)絡(luò)中的一個(gè)非常關(guān)鍵的問(wèn)題?;叵胍幌拢诮獯a階段,我們從由編碼器生成的均值和方差向量控制的分布中對(duì)潛在向量編碼進(jìn)行采樣。這在通過(guò)我們的網(wǎng)絡(luò)前向傳播數(shù)據(jù)時(shí)不會(huì)產(chǎn)生問(wèn)題,但在從解碼器到編碼器的反向傳播梯度時(shí)會(huì)導(dǎo)致一個(gè)大問(wèn)題,因?yàn)椴蓸硬僮魇遣豢晌⒌摹?/p>

簡(jiǎn)單來(lái)說(shuō),我們無(wú)法從采樣操作中計(jì)算梯度。

這個(gè)問(wèn)題的一個(gè)很好的解決方法是應(yīng)用重新參數(shù)化技巧。其工作原理是首先生成均值為 0 和方差為 1 的標(biāo)準(zhǔn)高斯分布,然后使用編碼器生成的均值和方差對(duì)該分布執(zhí)行可微加法和乘法運(yùn)算。

請(qǐng)注意,我們?cè)诖a中將方差轉(zhuǎn)換為對(duì)數(shù)空間。這是為了確保數(shù)值穩(wěn)定性。引入了額外的損失項(xiàng)Kullback-Leibler 散度損失,以確保我們生成的分布盡可能接近均值為 0 方差為 1 的標(biāo)準(zhǔn)高斯分布。

將分布的均值驅(qū)動(dòng)為零可確保我們生成的分布彼此非常接近,以防止分布之間的不連續(xù)性。接近 1 的方差意味著我們有一個(gè)更適中的(即,不是很大也不是很?。┑目臻g來(lái)生成編碼。

pYYBAGJzkXyAIO3EAABkdTBYcsI191.png

執(zhí)行重新參數(shù)化技巧后,通過(guò)將方差向量與標(biāo)準(zhǔn)高斯分布相乘并將結(jié)果與??均值向量相加得到的分布與均值和方差向量立即控制的分布非常相似。

構(gòu)建變分自編碼器的簡(jiǎn)單步驟

讓我們通過(guò)總結(jié)構(gòu)建變分自動(dòng)編碼器的步驟來(lái)結(jié)束本教程

構(gòu)建編碼器和解碼器網(wǎng)絡(luò)。

在編碼器和解碼器之間應(yīng)用重新參數(shù)化技巧以允許反向傳播。

端到端訓(xùn)練兩個(gè)網(wǎng)絡(luò)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編碼器
    +關(guān)注

    關(guān)注

    45

    文章

    3708

    瀏覽量

    135770
  • tensorflow
    +關(guān)注

    關(guān)注

    13

    文章

    329

    瀏覽量

    60732
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    [8.2]--8.2自動(dòng)編碼器

    深度學(xué)習(xí)
    jf_60701476
    發(fā)布于 :2022年12月01日 02:37:18

    新手 Protel 99SE 自動(dòng)編碼和電氣規(guī)則問(wèn)題

    跟著視頻畫(huà)的,到自動(dòng)編碼時(shí)出現(xiàn)這個(gè)問(wèn)題,哪位大神幫忙
    發(fā)表于 03-12 22:36

    基于編碼器的異常小區(qū)檢測(cè)

    Decoder將z重構(gòu)成原始輸入?!   D2 編碼器處理過(guò)程示意圖  VAE 的參數(shù)通過(guò)兩個(gè)損失函數(shù)來(lái)進(jìn)行訓(xùn)練:一個(gè)是重構(gòu)損失(reconstruction loss),它迫使
    發(fā)表于 12-03 15:06

    稀疏邊緣降噪自動(dòng)編碼器的方法

    為了提高自動(dòng)編碼器算法的學(xué)習(xí)精度,更進(jìn)一步降低分類任務(wù)的分類錯(cuò)誤率,提出一種組合稀疏自動(dòng)編碼器(SAE)和邊緣降噪自動(dòng)編碼器(mDAE)從而形成稀疏邊緣降噪自動(dòng)編碼器(SmDAE)的方
    發(fā)表于 12-21 14:41 ?3次下載
    稀疏邊緣降噪<b class='flag-5'>自動(dòng)編碼器</b>的方法

    基于動(dòng)態(tài)dropout的改進(jìn)堆疊自動(dòng)編碼機(jī)方法

    自動(dòng)編碼機(jī)算法中;同時(shí),根據(jù)傳統(tǒng)dropout算法容易使部分節(jié)點(diǎn)長(zhǎng)期處于熄火狀態(tài)的缺陷,提出了一種動(dòng)態(tài)dropout改進(jìn)算法,使用動(dòng)態(tài)函數(shù)將傳統(tǒng)靜態(tài)熄火率修改為隨著迭代次數(shù)逐漸減小的動(dòng)態(tài)熄火率;最后,利用動(dòng)態(tài)dropout算法改進(jìn)堆疊自動(dòng)編碼機(jī)的預(yù)
    發(fā)表于 12-26 14:37 ?0次下載
    基于動(dòng)態(tài)dropout的改進(jìn)堆疊<b class='flag-5'>自動(dòng)編碼</b>機(jī)方法

    自動(dòng)編碼器的社區(qū)發(fā)現(xiàn)算法

    準(zhǔn)確.提出一種基于深度稀疏自動(dòng)編碼器的社區(qū)發(fā)現(xiàn)算法CoDDA(a community detection algorithm based on deep sparse autoencoder),嘗試提高使用這些經(jīng)典方法處理高維鄰接矩陣進(jìn)行社區(qū)發(fā)現(xiàn)的準(zhǔn)確性.首先,提出基于跳數(shù)的處理方法,對(duì)稀疏的鄰接矩
    發(fā)表于 01-02 18:32 ?0次下載
    <b class='flag-5'>自動(dòng)編碼器</b>的社區(qū)發(fā)現(xiàn)算法

    自動(dòng)編碼器與PCA的比較

    編碼器雖然不像 PCA 那般在教科書(shū)上隨處可見(jiàn),但是在早期被拿來(lái)做深度網(wǎng)絡(luò)的逐層預(yù)訓(xùn)練,其地位可見(jiàn)一斑。盡管在 ReLU、Dropout 等神器出現(xiàn)之后,人們不再使用 AutoEncoders 來(lái)
    發(fā)表于 06-11 15:37 ?5976次閱讀

    稀疏自編碼器TensorFlow實(shí)現(xiàn)詳解

     稀疏自編碼器(又稱稀疏自動(dòng)編碼機(jī))中,重構(gòu)誤差中添加了一個(gè)稀疏懲罰,用來(lái)限定任何時(shí)刻的隱藏層中并不是所有單元都被激活。如果 m 是輸入模式的總數(shù),那么可以定義一個(gè)參數(shù) ρ_hat,用來(lái)表示每個(gè)隱藏層單元的行為(平均激活多少次)。
    發(fā)表于 06-11 16:45 ?3927次閱讀
    稀疏自<b class='flag-5'>編碼器</b>及<b class='flag-5'>TensorFlow</b>實(shí)現(xiàn)詳解

    如何使用深度神經(jīng)網(wǎng)絡(luò)技術(shù)實(shí)現(xiàn)機(jī)器學(xué)習(xí)的全噪聲自動(dòng)編碼器

    ,基于自動(dòng)編碼器的深度神經(jīng)網(wǎng)絡(luò)可以有效的用于數(shù)據(jù)特征提取。自動(dòng)編碼是一種無(wú)監(jiān)督學(xué)習(xí)算法,稀疏自動(dòng)編碼器、降噪自動(dòng)編碼器、收縮自動(dòng)編碼器是在原
    發(fā)表于 12-11 15:44 ?7次下載
    如何使用深度神經(jīng)網(wǎng)絡(luò)技術(shù)實(shí)現(xiàn)機(jī)器學(xué)習(xí)的全噪聲<b class='flag-5'>自動(dòng)編碼器</b>

    一種改進(jìn)的基于半自動(dòng)編碼器的協(xié)同過(guò)濾推薦算法

    為高效利用推薦系統(tǒng)中用戶和物品的交互歷史和輔助信息,提出一種改進(jìn)的協(xié)同過(guò)濾推薦算法。利用半自動(dòng)編碼器對(duì)用戶和物品的輔助信息進(jìn)行特征提取,將提取岀的特征映射到矩陣分解模型中,通過(guò)反向傳播算法實(shí)現(xiàn)半自動(dòng)編碼器
    發(fā)表于 03-23 16:35 ?4次下載
    一種改進(jìn)的基于半<b class='flag-5'>自動(dòng)編碼器</b>的協(xié)同過(guò)濾推薦算法

    一種混合自動(dòng)編碼器高斯混合模型MAGMM

    高維數(shù)據(jù)的無(wú)監(jiān)督異常檢測(cè)是機(jī)器學(xué)習(xí)的重要挑戰(zhàn)之一。雖然先前基于單一深度自動(dòng)編碼器和密度估計(jì)的方法已經(jīng)取得了顯著的進(jìn)展,但是其僅通過(guò)一個(gè)深度自編碼器來(lái)生成低維表示,這表明沒(méi)有足夠的信息來(lái)執(zhí)行后續(xù)
    發(fā)表于 04-13 15:33 ?7次下載
    一種混合<b class='flag-5'>自動(dòng)編碼器</b>高斯混合模型MAGMM

    一種基于編碼器的人臉圖像修復(fù)方法

    基于卷積神經(jīng)網(wǎng)絡(luò)的人臉圖像修復(fù)技術(shù)在刑事偵破、文物保護(hù)及影視特效等領(lǐng)域有著重要的應(yīng)用。但現(xiàn)有方法存在著圖像修復(fù)結(jié)果不夠清晰以及結(jié)果多樣化不足等缺點(diǎn),為此,提出了一種基于編碼器的人臉圖像修復(fù)
    發(fā)表于 04-21 10:51 ?10次下載
    一種基于<b class='flag-5'>變</b><b class='flag-5'>分</b>自<b class='flag-5'>編碼器</b>的人臉圖像修復(fù)方法

    堆疊降噪自動(dòng)編碼器(SDAE)

    自動(dòng)編碼器(Auto-Encoder,AE) 自編碼器(autoencoder)是神經(jīng)網(wǎng)絡(luò)的一種,經(jīng)過(guò)訓(xùn)練后能嘗試將輸入復(fù)制到輸出。自編碼器內(nèi)部有一個(gè)隱藏層 h,可以產(chǎn)生
    的頭像 發(fā)表于 01-11 17:04 ?6944次閱讀
    堆疊降噪<b class='flag-5'>自動(dòng)編碼器</b>(SDAE)

    編碼器好壞怎么判斷,編碼器原理

    編碼器(Encoder)是將輸入數(shù)據(jù)轉(zhuǎn)化為特定編碼表示的一種技術(shù)。對(duì)于不同類型的編碼器,評(píng)判其好壞可以從多個(gè)方面進(jìn)行考量,包括編碼質(zhì)量、速度、模型結(jié)構(gòu)等。
    的頭像 發(fā)表于 01-23 10:58 ?2116次閱讀

    tensorflow簡(jiǎn)單的模型訓(xùn)練

    TensorFlow開(kāi)始,然后介紹如何構(gòu)建和訓(xùn)練一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)模型。 1. 安裝TensorFlow 首先,我們需要安裝TensorFlow
    的頭像 發(fā)表于 07-05 09:38 ?920次閱讀