8. Dropout and Strides For Larger Models
Intro
這是深度學(xué)習(xí)第8課。
本科結(jié)束后,你將會理解并知道如何使用:
- Stride lengths來快速建立模型并減少內(nèi)存消耗;
- Dropout 來對抗過擬合;
這兩個技術(shù)在大型模型中很有用。
Lesson
[1]
from IPython.display import YouTubeVideo YouTubeVideo('fwNLf4t7MR8', width=800, height=450)Sample Code
[2]
import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from tensorflow.python import keras from tensorflow.python.keras.models import Sequential from tensorflow.python.keras.layers import Dense, Flatten, Conv2D, Dropoutimg_rows, img_cols = 28, 28 num_classes = 10def data_prep(raw):out_y = keras.utils.to_categorical(raw.label, num_classes)num_images = raw.shape[0]x_as_array = raw.values[:,1:]x_shaped_array = x_as_array.reshape(num_images, img_rows, img_cols, 1)out_x = x_shaped_array / 255return out_x, out_ytrain_size = 30000 train_file = "../input/digit-recognizer/train.csv" raw_data = pd.read_csv(train_file)x, y = data_prep(raw_data)model = Sequential() model.add(Conv2D(30, kernel_size=(3, 3),strides=2,activation='relu',input_shape=(img_rows, img_cols, 1))) model.add(Dropout(0.5)) model.add(Conv2D(30, kernel_size=(3, 3), strides=2, activation='relu')) model.add(Dropout(0.5)) model.add(Flatten()) model.add(Dense(128, activation='relu')) model.add(Dense(num_classes, activation='softmax'))model.compile(loss=keras.losses.categorical_crossentropy,optimizer='adam',metrics=['accuracy']) model.fit(x, y,batch_size=128,epochs=2,validation_split = 0.2) /opt/conda/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.from ._conv import register_converters as _register_convertersTrain on 33600 samples, validate on 8400 samples Epoch 1/2 33600/33600 [==============================] - 14s 408us/step - loss: 0.6243 - acc: 0.8026 - val_loss: 0.2235 - val_acc: 0.9354 Epoch 2/2 33600/33600 [==============================] - 14s 417us/step - loss: 0.2664 - acc: 0.9176 - val_loss: 0.1315 - val_acc: 0.9630<tensorflow.python.keras._impl.keras.callbacks.History at 0x7f58d9f92c88>?
Exercise: Dropout and Strides For Larger Models
Introduction
您已經(jīng)構(gòu)建了一個模型來識別MNIST for Fashion數(shù)據(jù)集中的服裝類型。 現(xiàn)在,您將使模型更大,指定更大的stride lengths并應(yīng)用dropout。 這些更改將使您的模型更快,更準(zhǔn)確。
這是深度學(xué)習(xí)課程的最后一步。
Starter Code
Data Preparation
你需要運行以下單元
【3】
import numpy as np from sklearn.model_selection import train_test_split from tensorflow.python import kerasimg_rows, img_cols = 28, 28 num_classes = 10def prep_data(raw, train_size, val_size):y = raw[:, 0]out_y = keras.utils.to_categorical(y, num_classes)x = raw[:,1:]num_images = raw.shape[0]out_x = x.reshape(num_images, img_rows, img_cols, 1)out_x = out_x / 255return out_x, out_yfashion_file = "../input/fashionmnist/fashion-mnist_train.csv" fashion_data = np.loadtxt(fashion_file, skiprows=1, delimiter=',') x, y = prep_data(fashion_data, train_size=50000, val_size=5000)Sample Model Code
[4]
fashion_model = Sequential() fashion_model.add(Conv2D(12, kernel_size=(3, 3), strides=2,activation='relu',input_shape=(img_rows, img_cols, 1))) fashion_model.add(Conv2D(12, (3, 3), strides=2, activation='relu')) fashion_model.add(Flatten()) fashion_model.add(Dense(128, activation='relu')) fashion_model.add(Dense(num_classes, activation='softmax'))fashion_model.compile(loss=keras.losses.categorical_crossentropy,optimizer='adam',metrics=['accuracy'])fashion_model.fit(train_x, train_y,batch_size=batch_size,epochs=epochs,validation_split = 0.2)Adding Strides
指定,編譯和擬合模型,與上面的模型非常相似,但為每個卷積層指定步長為2。 調(diào)用你的新模型fashion_model_1。
【5】
from tensorflow.python.keras.models import Sequential from tensorflow.python.keras.layers import Dense, Flatten, Conv2D, Dropoutfashion_model_1 = Sequential() # Specify the rest of the model# Compile fashion_model_1# Fit fashion_model_1Make Model Larger
您應(yīng)該已經(jīng)注意到fashion_model_1訓(xùn)練得非常快。 這樣可以使模型更大。 指定名為fashion_model_2的新模型,該模型與fashion_model_1相同,但以下情況除外:
指定fashion_model_2后,編譯并擬合它。
【6】
# Your code for fashion_model_2 belowAdd Dropout
指定fashion_model_3,它與fashion_model_2相同,只是它在每個卷積層之后立即添加了丟失(因此它增加了3次丟失)。 編譯并擬合此模型。 將模型在驗證數(shù)據(jù)上的性能與之前的模型進(jìn)行比較。
【7】
# Your code for fashion_model_3 belowCongrats
你已經(jīng)完成了深度學(xué)習(xí)課程的第1級。 您可以使用工具來創(chuàng)建和調(diào)整計算機視覺模型。 選擇一個項目并嘗試你的技能。
您可能嘗試的一些有趣的數(shù)據(jù)集包括:
- ???? 書面信件識別
- ???? 花卉鑒定
- ???? 貓與狗
- ???? 10只猴子
- ???? 從X射線預(yù)測骨齡
你學(xué)到了很多東西。 在深度學(xué)習(xí)中還有很多東西需要學(xué)習(xí),但你應(yīng)該對自己的新技能感到滿意。
Conclusion
練習(xí)結(jié)束后,您已完成深度學(xué)習(xí)課程。 你已經(jīng)可以做一些很棒的事了,當(dāng)我們發(fā)布它時你就可以開始升級。 2級將擴展您可以做的許多新類型的應(yīng)用程序。
總結(jié)
以上是生活随笔為你收集整理的8. Dropout and Strides For Larger Models的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab中均线交易策略,【每日一策】
- 下一篇: Apollo进阶课程㉘丨Apollo控制