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

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

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

是時(shí)候搭建屬于自己的神經(jīng)網(wǎng)絡(luò)了!

電子工程師 ? 來源:lq ? 2019-05-16 18:14 ? 次閱讀

想要真的了解深度學(xué)習(xí),除了看視頻,拿數(shù)據(jù)和算力真槍實(shí)彈的練手可能比各種理論知識更重要。

編程基礎(chǔ)不好?不會(huì)配置環(huán)境?本地GPU太貴配置太低?訓(xùn)練速度達(dá)不到要求?這些可能都是阻礙你搭建第一個(gè)神經(jīng)網(wǎng)絡(luò)的原因。

谷歌開發(fā)者博客的Codelabs項(xiàng)目上面給出了一份教程(課程鏈接在文末),不只是教你搭建神經(jīng)網(wǎng)絡(luò),還給出四個(gè)實(shí)驗(yàn)案例,手把手教你如何使用keras、TPU、Colab。

這個(gè)練手指南被成為“僅會(huì)一點(diǎn)點(diǎn)python也能看懂”,也就是說,基礎(chǔ)再薄弱都可以直接了解哦。

(連python都不會(huì)的同學(xué),文摘菌前幾天發(fā)布了一個(gè)100python計(jì)劃,可以先行學(xué)習(xí)了再來跟著這篇文章搭建神經(jīng)網(wǎng)絡(luò)。)

四次實(shí)驗(yàn)均在谷歌的Collab上運(yùn)行,由淺入深、循序漸進(jìn)。無需進(jìn)行任何設(shè)置,可以用Chromebook打開,實(shí)驗(yàn)環(huán)境都幫你搭建好了。

跟著文摘菌一起,是時(shí)候搭建一個(gè)屬于自己的神經(jīng)網(wǎng)絡(luò)了!

快速開啟!

四次實(shí)驗(yàn)均選擇TPU支持,這會(huì)使代碼運(yùn)行速度大大加快,畢竟用了硬件加速。

先教會(huì)你如何在Tensorflow框架下快速加載數(shù)據(jù),然后介紹一些tf.data.Dataset的基礎(chǔ)知識,包括eager模式以及元組數(shù)據(jù)集等。

第二部分,手把手教你實(shí)現(xiàn)遷移學(xué)習(xí),把別人訓(xùn)練好的模型拿過來直接使用,不用一步一步搭建也能使用強(qiáng)大的神經(jīng)網(wǎng)絡(luò)。除了遷移學(xué)習(xí),在這部分還會(huì)簡單介紹一些必要的知識點(diǎn),包括神經(jīng)元、激活函數(shù)等。

第三部分,進(jìn)入卷積神經(jīng)網(wǎng)絡(luò)部分,在了解卷積層、池化層、Dense層卷積網(wǎng)絡(luò)三個(gè)必要的組件之后,你將學(xué)會(huì)使用Keras Sequential模型構(gòu)建卷積圖像分類器,并使用良好的卷積層選擇來微調(diào)模型。

第四部分,進(jìn)入到更加前沿的部分,在接受了前面三個(gè)部分的洗禮之后,在這部分你會(huì)實(shí)現(xiàn)在Keras中利用TPU組建現(xiàn)代卷積網(wǎng)絡(luò)和實(shí)現(xiàn)分類。

和在Jupyter Notebook操作方式一樣,同時(shí)按住鍵盤的Shift和enter按鈕,便可以運(yùn)行代碼。

如果你是首次執(zhí)行,需要登錄Google帳戶進(jìn)行身份驗(yàn)證。注意頁面提醒就可以啦~

此notebook支持目錄功能,點(diǎn)擊網(wǎng)頁左側(cè)的黑色箭頭可以查看。

利用Colab上的TPU訓(xùn)練Keras模型需要輸入以下代碼?

tpu = tf.contrib.cluster_resolver.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)

本質(zhì)上是在keras中調(diào)用keras_to_tpu_model,部署額外的硬件可以通過增加訓(xùn)練批次的大小增加訓(xùn)練過程。需要注意的是目前,Keras支持僅限于8個(gè)核心或一個(gè)Cloud TPU。

注:TPU可以在神經(jīng)網(wǎng)絡(luò)運(yùn)算上達(dá)到高計(jì)算吞吐量,同時(shí)能耗和物理空間都很小。因?yàn)門PU從內(nèi)存加載數(shù)據(jù)。當(dāng)每個(gè)乘法被執(zhí)行后,其結(jié)果將被傳遞到下一個(gè)乘法器,同時(shí)執(zhí)行加法。因此結(jié)果將是所有數(shù)據(jù)和參數(shù)乘積的和。在大量計(jì)算和數(shù)據(jù)傳遞的整個(gè)過程中,不需要執(zhí)行任何的內(nèi)存訪問。

介紹完基本的操作,接下來,文摘菌帶大家看看官方給出的四個(gè)實(shí)驗(yàn)。

Tensorflow入門:tfrecords和tf.data

此實(shí)驗(yàn)涉及兩個(gè)tf的基礎(chǔ)操作,一個(gè)是使用tf.data.Dataset API導(dǎo)入訓(xùn)練數(shù)據(jù),另一個(gè)是使用TFRecord格式從GCS有效導(dǎo)入訓(xùn)練數(shù)據(jù)。

此次實(shí)驗(yàn)使用花卉圖片的數(shù)據(jù)集,學(xué)習(xí)的目標(biāo)是將其分為5種類別。使用tf.data.Dataset API執(zhí)行數(shù)據(jù)加載。

Keras和Tensorflow在其所有訓(xùn)練和評估功能中接受數(shù)據(jù)集。在數(shù)據(jù)集中加載數(shù)據(jù)后,API會(huì)提供對神經(jīng)網(wǎng)絡(luò)訓(xùn)練數(shù)據(jù)有用的所有常用功能:

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

了解API并試著運(yùn)行:

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

關(guān)于鮮花數(shù)據(jù)集,數(shù)據(jù)集按5個(gè)文件夾組織,每個(gè)文件夾都包含一種花。文件夾名為向日葵,雛菊,蒲公英,郁金香和玫瑰。數(shù)據(jù)托管在Google云端存儲(chǔ)上的公共存儲(chǔ)區(qū)中。

gs://flowers-public/sunflowers/5139971615_434ff8ed8b_n.jpggs://flowers-public/daisy/8094774544_35465c1c64.jpggs://flowers-public/sunflowers/9309473873_9d62b9082e.jpggs://flowers-public/dandelion/19551343954_83bb52f310_m.jpggs://flowers-public/dandelion/14199664556_188b37e51e.jpggs://flowers-public/tulips/4290566894_c7f061583d_m.jpggs://flowers-public/roses/3065719996_c16ecd5551.jpggs://flowers-public/dandelion/8168031302_6e36f39d87.jpggs://flowers-public/sunflowers/9564240106_0577e919da_n.jpggs://flowers-public/daisy/14167543177_cd36b54ac6_n.jpg

tf.data.Dataset基礎(chǔ)知識

數(shù)據(jù)通常包含多個(gè)文件,此處為圖像,通過調(diào)用以下方法創(chuàng)建文件名數(shù)據(jù)集:

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

然后,將函數(shù)“映射”到每個(gè)文件名,這些文件通常導(dǎo)入文件并解碼為內(nèi)存中的實(shí)際數(shù)據(jù):

def decode_jpeg(filename): bits = tf.read_file(filename) image = tf.image.decode_jpeg(bits) return imageimage_dataset = filenames_dataset.map(decode_jpeg)# this is now a dataset of decoded images (uint8 RGB format)

有關(guān)tf.data.Dataset的基礎(chǔ)知識、tf.data.Dataset和eager模式、元組數(shù)據(jù)集的詳細(xì)步驟,請戳:

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

但逐個(gè)加載圖像很慢,在迭代此數(shù)據(jù)集時(shí),每秒只可以加載1-2個(gè)圖像。我們將用訓(xùn)練的硬件加速器,可以將速率提高很多倍。

快速加載數(shù)據(jù)

我們將在本實(shí)驗(yàn)中使用的Tensor Processing Unit(TPU)硬件加速器。Google云端存儲(chǔ)(GCS)能夠保持極高的吞吐量,但與所有云存儲(chǔ)系統(tǒng)一樣,形成連接時(shí)需要來回請求。因此,將數(shù)據(jù)存儲(chǔ)為數(shù)千個(gè)單獨(dú)的文件并不理想。我們將在少量文件中批量處理它們,并使用tf.data.Dataset的強(qiáng)大功能一次性讀取多個(gè)文件。

通過加載圖像文件的代碼將它們調(diào)整為通用大小,然后將它們存儲(chǔ)在16個(gè)TFRecord文件中,代碼鏈接如下:

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

經(jīng)驗(yàn)法則是將數(shù)據(jù)分成幾個(gè)(10s到100s)的大文件(10s到100s的MB)。如果有太多文件,例如數(shù)千個(gè)文件,那么訪問每個(gè)文件的時(shí)間可能會(huì)開始妨礙。如果文件太少,例如一兩個(gè)文件,那么就無法并行獲取多個(gè)文件的優(yōu)勢。

TFRecord文件格式

Tensorflow用于存儲(chǔ)數(shù)據(jù)的首選文件格式是基于protobuf的TFRecord格式。其他序列化格式也可以使用,可以通過以下方式直接從TFRecord文件加載數(shù)據(jù)集:

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

但你擁有TFRecords的數(shù)據(jù)集時(shí),下一步解碼步驟就是從每個(gè)記錄中獲得數(shù)據(jù)。如前所述,你將使用Dataset.map,并注意num_parallel_reads=32參數(shù)。這將從32個(gè)TFRecord文件并行加載數(shù)據(jù),可以獲得最佳性能。

在Keras中利用遷移學(xué)習(xí)

本次實(shí)驗(yàn)在keras中實(shí)現(xiàn)遷移學(xué)習(xí),將強(qiáng)大的預(yù)訓(xùn)練模型應(yīng)用于我們的數(shù)據(jù)集,不用費(fèi)力重新訓(xùn)練模型。此外,本實(shí)驗(yàn)包含有關(guān)神經(jīng)網(wǎng)絡(luò)的必要理論解釋。

神經(jīng)網(wǎng)絡(luò)分類器是由幾個(gè)層的神經(jīng)元組成。對于圖像分類,這些可以是Dense層,或者更常見的是卷積層。它們通常通過relu激活函數(shù)激活。最后一層使用與類相同數(shù)量的神經(jīng)元,并使用softmax激活。對于分類,交叉熵是最常用的損失函數(shù),將獨(dú)熱編碼標(biāo)簽(即正確答案)與神經(jīng)網(wǎng)絡(luò)預(yù)測的概率進(jìn)行比較。例如,為了最大限度地減少損失,最好選擇具有動(dòng)量的優(yōu)化器AdamOptimizer并批量訓(xùn)練圖像和標(biāo)簽。

對于構(gòu)建為層序列的模型,Keras提供了Sequential API。例如,使用三個(gè)Dense層的圖像分類器可以在Keras中編寫為:

model = tf.keras.Sequential([ tf.keras.layers.Flatten(input_shape=[192, 192, 3]), tf.keras.layers.Dense(500, activation="relu"), 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 answers# train the modelmodel.fit(dataset, ... )

Dense神經(jīng)網(wǎng)絡(luò)

這是用于分類圖像的最簡單的神經(jīng)網(wǎng)絡(luò)。它由分層排列的“神經(jīng)元”組成。第一層處理輸入數(shù)據(jù)并將其輸出饋送到其他層。之所以被稱為“Dense”是因?yàn)槊總€(gè)神經(jīng)元都連接到前一層中的所有神經(jīng)元。

你可以將圖像的所有像素的RGB值展開為長矢量并將其用作輸入,從而將圖像輸入到此類網(wǎng)絡(luò)中。它不是圖像識別的最佳技術(shù),但我們稍后會(huì)對其進(jìn)行改進(jìn)。

神經(jīng)元

“神經(jīng)元”計(jì)算其所有輸入的并進(jìn)行加權(quán)求和,添加一個(gè)稱為“偏差”的值,并通過所謂的“激活函數(shù)”提供結(jié)果。權(quán)重和偏差最初是未知的。它們將被隨機(jī)初始化并通過在許多已知數(shù)據(jù)上訓(xùn)練神經(jīng)網(wǎng)絡(luò)來“學(xué)習(xí)”。

最流行的激活函數(shù)被稱為RELU(Rectified Linear Unit)如上圖所示。

Softmax激活

我們將花分為5類(玫瑰,郁金香,蒲公英,雛菊,向日葵),使用經(jīng)典RELU激活函數(shù)。然而,在最后一層,我們想要計(jì)算0到1之間的數(shù)字,表示這朵花是玫瑰,郁金香等的概率。為此,我們將使用名為“softmax”的激活函數(shù)。

在矢量上應(yīng)用softmax函數(shù)是通過取每個(gè)元素的指數(shù)然后歸一化矢量來完成的,通常使用L1范數(shù)(絕對值之和),使得這些值加起來可以解釋為概率。

對于圖像分類問題,Dense層可能是不夠的。但我們也可以另辟蹊徑!有完整的卷積神經(jīng)網(wǎng)絡(luò)可供下載。我們可以切掉它們的最后一層softmax分類,并用下載的替換它。所有訓(xùn)練過的權(quán)重和偏差保持不變,你只需重新訓(xùn)練你添加的softmax層。這種技術(shù)被稱為遷移學(xué)習(xí),只要預(yù)先訓(xùn)練神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)集與你的“足夠接近”,它就可以工作。

請打開下面的notebook,同時(shí)按住Shift-ENTER運(yùn)行代碼:

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

插圖:使用已經(jīng)訓(xùn)練過的復(fù)雜卷積神經(jīng)網(wǎng)絡(luò)作為黑匣子,僅對分類的最后一層進(jìn)行再訓(xùn)練。這是遷移學(xué)習(xí)。

通過遷移學(xué)習(xí),你可以從頂級研究人員已經(jīng)開發(fā)的高級卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)和大量圖像數(shù)據(jù)集的預(yù)訓(xùn)練中受益。在我們的案例中,我們將從ImageNet訓(xùn)練的網(wǎng)絡(luò)遷移學(xué)習(xí)。

在Keras中,可以從tf.keras.applications.*集合中實(shí)例化預(yù)先訓(xùn)練的模型。例如,MobileNet V2是一個(gè)非常好的卷積架構(gòu),其尺寸合理。通過選擇include_top=False,你可以獲得沒有最終softmax圖層的預(yù)訓(xùn)練模型,以便你可以添加自己的模型:

pretrained_model = tf.keras.applications.MobileNetV2(input_shape=[*IMAGE_SIZE, 3], include_top=False)pretrained_model.trainable = Falsemodel = tf.keras.Sequential([ pretrained_model, tf.keras.layers.Flatten(), tf.keras.layers.Dense(5, activation='softmax')])

另請注意pretrained_model.trainable = False設(shè)置。它凍結(jié)了預(yù)訓(xùn)練模型的權(quán)重和偏差,因此你只能訓(xùn)練softmax圖層。這通常針對相對較少的權(quán)重并且可以快速完成而無需非常大的數(shù)據(jù)集。但是,如果你確實(shí)擁有大量數(shù)據(jù),那么pretrained_model.trainable = True可以讓遷移學(xué)習(xí)更好地工作。然后,經(jīng)過預(yù)先訓(xùn)練的權(quán)重可提供出色的初始值,并且仍可通過訓(xùn)練進(jìn)行調(diào)整,以更好地適應(yīng)你的問題。

最后,請注意在dense softmax層前插入Flatten()層。Dense層對數(shù)據(jù)的平面向量起作用,但我們不知道這是否是預(yù)訓(xùn)練模型返回的內(nèi)容,這就是我們需要扁平化的原因。在下一章中,當(dāng)我們深入研究卷積體系結(jié)構(gòu)時(shí),我們將解釋卷積層返回的數(shù)據(jù)格式。

在Keras中利用TPU組建卷積神經(jīng)網(wǎng)絡(luò)

本次實(shí)驗(yàn),完成三個(gè)目標(biāo):

使用Keras Sequential模型構(gòu)建卷積圖像分類器。

在TPU上訓(xùn)練Keras模型

使用良好的卷積層選擇來微調(diào)模型。

卷積將神經(jīng)網(wǎng)絡(luò)將一系列濾波器應(yīng)用于圖像的原始像素?cái)?shù)據(jù)以提取和學(xué)習(xí)更高級別的特征,使得該模型能夠?qū)⑦@些特征用于分類。卷積將神經(jīng)網(wǎng)絡(luò)包含三個(gè)組件:

卷積層,將特定數(shù)量的卷積濾鏡(convolution filters)應(yīng)用于圖像。對于每個(gè)子區(qū)域,圖層執(zhí)行一組數(shù)學(xué)運(yùn)算以在輸出特征映射中生成單個(gè)值。

池化層(Pooling layers),負(fù)責(zé)對由卷積層提取的圖像數(shù)據(jù)進(jìn)行下采樣以減少特征映射的維度以提高處理效率。常用的池化算法是最大池化,其提取特征地圖的子區(qū)域(例如,2×2像素的塊),保持它們的最大值并丟棄所有其他值。

Dense層,對由卷積圖層提取的特征并由共用圖層進(jìn)行下采樣執(zhí)行分類。Dense層是全連接的神經(jīng)網(wǎng)絡(luò),在Dense層中,圖層中的每個(gè)節(jié)點(diǎn)都連接到前一圖層中的每個(gè)節(jié)點(diǎn)。

用最大池化做卷積的動(dòng)畫示例如下?

用Softmax激活函數(shù)連接分類器,典型的卷積分類器如下?

在keras中搭建神經(jīng)網(wǎng)絡(luò)代碼如下:

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'])

在搭建的過程中,必須在權(quán)重和偏差之間找到適當(dāng)?shù)钠胶恻c(diǎn),如果權(quán)重太大,神經(jīng)網(wǎng)絡(luò)可能無法代表復(fù)雜性,如果參數(shù)太多,可能導(dǎo)致過擬合。所以在在Keras中,用model.summary()函數(shù)顯示模型的結(jié)構(gòu)和參數(shù):

具體代碼地址:

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組建現(xiàn)代卷積網(wǎng)絡(luò)和實(shí)現(xiàn)分類

之前三個(gè)實(shí)驗(yàn)已經(jīng)分別介紹了TPU、遷移學(xué)習(xí)和卷積網(wǎng)絡(luò),是不是已經(jīng)覺得很厲害了?別著急,最后的大招來了,本次實(shí)驗(yàn)我們將實(shí)現(xiàn)在Keras中利用TPU組建現(xiàn)代卷積網(wǎng)絡(luò)和實(shí)現(xiàn)分類。

現(xiàn)代卷積架構(gòu)(Modern convolutions networks)

簡而言之,從"Inception" 和 "Inception v2"開始的現(xiàn)代卷積網(wǎng)絡(luò)通常使用“模塊”,其中在同一輸入上同時(shí)嘗試不同的卷積層,它們的輸出被連接并且網(wǎng)絡(luò)通過訓(xùn)練決定哪個(gè)層是最有用的。

在Keras中,要?jiǎng)?chuàng)建數(shù)據(jù)流可以分支進(jìn)出的模型,必須使用“functional”模型。這是一個(gè)例子:

l = tf.keras.layers # syntax shortcuty = l.Conv2D(filters=32, kernel_size=3, padding='same', activation='relu', input_shape=[192, 192, 3])(x) # x=input image# module start: branch outy1 = 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.concatenate([y1, y3]) # output 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濾波器

在此圖中,你可以看到兩個(gè)連續(xù)3x3濾波器的結(jié)果。嘗試追溯哪些數(shù)據(jù)點(diǎn)對結(jié)果有貢獻(xiàn):這兩個(gè)連續(xù)的3x3濾波器計(jì)算5x5區(qū)域的某種組合。它與5x5濾波器計(jì)算的組合并不完全相同,但值得嘗試,因?yàn)閮蓚€(gè)連續(xù)的3x3濾波器比單個(gè)5x5濾波器效率更高。

1x1卷積?

在數(shù)學(xué)術(shù)語中,“1x1”卷積是常數(shù)的乘法,而不是非常有用的概念。但是,在卷積神經(jīng)網(wǎng)絡(luò)中,請記住濾波器應(yīng)用于數(shù)據(jù)立方體,而不僅僅是2D圖像。因此,“1x1”濾波器計(jì)算1x1數(shù)據(jù)列的加權(quán)和(參見圖示),當(dāng)你在數(shù)據(jù)中滑動(dòng)時(shí),你將獲得輸入通道的線性組合。這實(shí)際上很有用。如果你將通道視為單個(gè)過濾操作的結(jié)果,例如“貓耳朵”的過濾器,另一個(gè)用于“貓胡須”,第三個(gè)用于“貓眼睛”,則“1x1”卷積層將計(jì)算多個(gè)這些特征的可能線性組合,在尋找“貓”時(shí)可能很有用。

Squeezenet

將這些想法融合在一起的簡單方法已在“Squeezenet”論文中展示,即一種僅使用1x1和3x3卷積層的卷積模塊設(shè)計(jì)。

https://arxiv.org/abs/1602.07360

基于“fire model”的squeezenet架構(gòu)。它們交替使用1x1層,在垂直維度上“擠壓”輸入數(shù)據(jù),然后是兩個(gè)并行的1x1和3x3卷積層,再次“擴(kuò)展”數(shù)據(jù)深度。

構(gòu)建一個(gè)受squeezenet啟發(fā)的卷積神經(jīng)網(wǎng)絡(luò)時(shí),我們就不能直接像上面一樣直接堆疊已有模塊,需要將模型代碼更改為Keras的“功能樣式”,來定義自己的模塊。

想要嘗試Squeezenet架構(gòu)練習(xí)的戳以下鏈接:

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

最后,手把手教程運(yùn)行代碼如下:

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

最后,文摘菌再次給出四個(gè)實(shí)驗(yàn)的鏈接,供參考喲~

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

此項(xiàng)目支持答疑,打開下列網(wǎng)址提交你的問題

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

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

原文標(biāo)題:Colab超火的Keras/TPU深度學(xué)習(xí)免費(fèi)實(shí)戰(zhàn),有點(diǎn)Python基礎(chǔ)就能看懂的快速課程

文章出處:【微信號:BigDataDigest,微信公眾號:大數(shù)據(jù)文摘】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    人工神經(jīng)網(wǎng)絡(luò)原理及下載

    這個(gè)網(wǎng)絡(luò)輸入和相應(yīng)的輸出來“訓(xùn)練”這個(gè)網(wǎng)絡(luò),網(wǎng)絡(luò)根據(jù)輸入和輸出不斷地調(diào)節(jié)自己的各節(jié)點(diǎn)之間的權(quán)值來滿足輸入和輸出。這樣,當(dāng)訓(xùn)練結(jié)束后,我們給定一個(gè)輸入,
    發(fā)表于 06-19 14:40

    神經(jīng)網(wǎng)絡(luò)教程(李亞非)

      第1章 概述  1.1 人工神經(jīng)網(wǎng)絡(luò)研究與發(fā)展  1.2 生物神經(jīng)元  1.3 人工神經(jīng)網(wǎng)絡(luò)的構(gòu)成  第2章人工神經(jīng)網(wǎng)絡(luò)基本模型  2.1 MP模型  2.2 感知器模型  2.3
    發(fā)表于 03-20 11:32

    當(dāng)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)用于應(yīng)用的時(shí)候,權(quán)值是不是不能變了?

    當(dāng)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)用于應(yīng)用的時(shí)候,權(quán)值是不是不能變了????就是已經(jīng)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)是不是相當(dāng)于得到一個(gè)公式,權(quán)值不能變了
    發(fā)表于 10-24 21:55

    【PYNQ-Z2試用體驗(yàn)】基于PYNQ的神經(jīng)網(wǎng)絡(luò)自動(dòng)駕駛小車 - 項(xiàng)目規(guī)劃

    ,神經(jīng)網(wǎng)絡(luò)技術(shù)的第三次發(fā)展浪潮仍在繼續(xù),在其背后,高性能CPU、GPU和FPGA、ASIC以強(qiáng)大的算力為技術(shù)的應(yīng)用落地提供有力的支持。然而目前基于FPGA平臺(tái)搭建神經(jīng)網(wǎng)絡(luò)作為控制器,
    發(fā)表于 03-02 23:10

    卷積神經(jīng)網(wǎng)絡(luò)如何使用

    卷積神經(jīng)網(wǎng)絡(luò)(CNN)究竟是什么,鑒于神經(jīng)網(wǎng)絡(luò)在工程上經(jīng)歷曲折的歷史,您為什么還會(huì)在意它呢? 對于這些非常中肯的問題,我們似乎可以給出相對簡明的答案。
    發(fā)表于 07-17 07:21

    【案例分享】ART神經(jīng)網(wǎng)絡(luò)與SOM神經(jīng)網(wǎng)絡(luò)

    今天學(xué)習(xí)兩個(gè)神經(jīng)網(wǎng)絡(luò),分別是自適應(yīng)諧振(ART)神經(jīng)網(wǎng)絡(luò)與自組織映射(SOM)神經(jīng)網(wǎng)絡(luò)。整體感覺不是很難,只不過一些最基礎(chǔ)的概念容易理解不清。首先ART
    發(fā)表于 07-21 04:30

    如何構(gòu)建神經(jīng)網(wǎng)絡(luò)

    原文鏈接:http://tecdat.cn/?p=5725 神經(jīng)網(wǎng)絡(luò)是一種基于現(xiàn)有數(shù)據(jù)創(chuàng)建預(yù)測的計(jì)算系統(tǒng)。如何構(gòu)建神經(jīng)網(wǎng)絡(luò)?神經(jīng)網(wǎng)絡(luò)包括:輸入層:根據(jù)現(xiàn)有數(shù)據(jù)獲取輸入的層隱藏層:使用反向傳播優(yōu)化輸入變量權(quán)重的層,以提高模型的預(yù)測
    發(fā)表于 07-12 08:02

    基于BP神經(jīng)網(wǎng)絡(luò)的PID控制

    最近在學(xué)習(xí)電機(jī)的智能控制,上周學(xué)習(xí)基于單神經(jīng)元的PID控制,這周研究基于BP神經(jīng)網(wǎng)絡(luò)的PID控制。神經(jīng)網(wǎng)絡(luò)具有任意非線性表達(dá)能力,可以通過對系統(tǒng)性能的學(xué)習(xí)來實(shí)現(xiàn)具有最佳組合的PID控
    發(fā)表于 09-07 07:43

    輕量化神經(jīng)網(wǎng)絡(luò)的相關(guān)資料下載

    視覺任務(wù)中,并取得了巨大成功。然而,由于存儲(chǔ)空間和功耗的限制,神經(jīng)網(wǎng)絡(luò)模型在嵌入式設(shè)備上的存儲(chǔ)與計(jì)算仍然是一個(gè)巨大的挑戰(zhàn)。前面幾篇介紹了如何在嵌入式AI芯片上部署神經(jīng)網(wǎng)絡(luò):【嵌入式AI開發(fā)】篇五|實(shí)戰(zhàn)篇一:STM32cubeIDE上部署
    發(fā)表于 12-14 07:35

    神經(jīng)網(wǎng)絡(luò)移植到STM32的方法

    問題,一個(gè)是神經(jīng)網(wǎng)絡(luò)的移植,另一個(gè)是STM32的計(jì)算速度。神經(jīng)網(wǎng)絡(luò)的移植網(wǎng)絡(luò)采用的是最簡單的BP神經(jīng)網(wǎng)絡(luò),基本原理可以自己去了解一下,大概就
    發(fā)表于 01-11 06:20

    卷積神經(jīng)網(wǎng)絡(luò)模型發(fā)展及應(yīng)用

    神經(jīng)網(wǎng)絡(luò)已經(jīng)廣泛應(yīng)用于圖像分類、目標(biāo)檢測、語義分割以及自然語言處理等領(lǐng)域。首先分析典型卷積神經(jīng)網(wǎng)絡(luò)模型為提高其性能增加網(wǎng)絡(luò)深度以及寬度的模型結(jié)構(gòu),分析
    發(fā)表于 08-02 10:39

    如何搭建自己神經(jīng)網(wǎng)絡(luò)

    神經(jīng)網(wǎng)絡(luò)基本概念是什么呢?(1)激勵(lì)函數(shù):例如一個(gè)神經(jīng)元對貓的眼睛敏感,那當(dāng)它看到貓的眼睛的時(shí)候,就被激勵(lì),相應(yīng)的參數(shù)就會(huì)被調(diào)優(yōu),它的貢獻(xiàn)就會(huì)越大。(2)添加
    發(fā)表于 12-29 10:51 ?1.1w次閱讀
    如何<b class='flag-5'>搭建</b><b class='flag-5'>自己</b>的<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>

    如何使用Numpy搭建神經(jīng)網(wǎng)絡(luò)

    很多同學(xué)入門機(jī)器學(xué)習(xí)之后,直接用TensorFlow調(diào)包實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò),對于神經(jīng)網(wǎng)絡(luò)內(nèi)在機(jī)理知之甚少。
    的頭像 發(fā)表于 05-18 11:02 ?3504次閱讀
    如何使用Numpy<b class='flag-5'>搭建</b><b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>

    卷積神經(jīng)網(wǎng)絡(luò)模型搭建

    卷積神經(jīng)網(wǎng)絡(luò)模型搭建 卷積神經(jīng)網(wǎng)絡(luò)模型是一種深度學(xué)習(xí)算法。它已經(jīng)成為了計(jì)算機(jī)視覺和自然語言處理等各種領(lǐng)域的主流算法,具有很大的應(yīng)用前景。本篇文章將詳細(xì)介紹卷積神經(jīng)網(wǎng)絡(luò)模型的
    的頭像 發(fā)表于 08-21 17:11 ?836次閱讀

    BP神經(jīng)網(wǎng)絡(luò)屬于DNN嗎

    屬于。BP神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network)是一種基于誤差反向傳播算法的多層前饋神經(jīng)網(wǎng)絡(luò),是深度學(xué)習(xí)(Deep Learning)領(lǐng)域中非常重要的一種模型。而
    的頭像 發(fā)表于 07-03 10:18 ?389次閱讀