使用Keras做貓狗分類

2021-08-13 19:59:18 字數 2549 閱讀 8984

3 建立cnn.py檔案

導入庫:

現在建立乙個序列的object:

classifier = sequential()

增加第乙個卷積操作:

classifier.add(conv2d(32, (3,3), input_shape=(64,64,3), activation = 『relu』))

網路序列化的意思是我們可以通過add增加每一層到classifier上。conv2d函式包含4個引數,第乙個是卷積核的個數也就是32, 第二個引數時卷積核的大小也就是(3,3),第三個引數是輸入大小和影象型別(rgb還是黑白圖)這裡表示卷積網路輸入(64,64)解析度的影象,3表示rgb影象。第四個引數為使用的啟用函式。

接下來需要完成池化操作在相關特徵圖(由卷積操作之後產生的32個feature maps)上。池化操作主要意圖是減少影象大小。關鍵就是我們試圖為下一層減少總共的節點數。

classifier.add(maxpooling2d(pool_size = (2,2)))

我們使用2*2矩陣,最小化畫素損失並得到特徵定位的精確區域。我們在不損失精度時減少模型複雜度。

接下來轉化所有池化後影象到乙個連續向量通過flattening函式,將2維矩陣轉化到一維向量。

classifier.add(flatten())

然後建立全連線層。扁平後的節點將作為輸入連線到全連線層。

classifier.add(dense(units = 128, activation=』relu』))

dense函式建立乙個全連線層,」units」表示該層中定義的節點數,這些單元值一般在輸入節點數和輸出節點數之間,但只能通過實驗來試出最好的值。

最後初始化輸出層,其只包含乙個節點,對於二元分類來說。

classifier.add(dense(units=1, activation=』sigmoid』))

現在完成了建立cnn模型,需要編譯它

classifier.compile(optimizer = 『adam』, loss=』binary_crossentropy』, metrics=[『accuracy』])

4在訓練資料之前,需要預處理影象防止過擬合。首先在資料集上做資料增強image augmentations. 使用keras.preprocessing 庫來合成部分去準備訓練集和測試集,字典的名稱為所有影象呈現的類別。

train_dategen = imagedatagenerator(rescale=1./255, shear_range=0.2, zoom_range = 0.2, horizontal_filp = true)

test_datagen = imagedatagenerator(rescale = 1./255)

training_set= train_datagen.flow_from_directory(『training_set』, target_size=(64, 64), batch_size=32, class_mode=』binary』)

test_set=test_datagen.flow_from_directory(『test_set』, target_size=(64, 64), batch_size=32, class_mode=』binary』)

上面所有操作是為了創造合成資料通過利用不同型別操作例如旋轉,模糊,裁剪等等。

下面使用資料去擬合模型

classifier.fit_generator(training_set, steps_per_epoch =8000, epochs = 25, validation_data =test_set, validation_steps = 2000)

其中steps_per_epoch表示訓練樣本個數,就是training_set資料夾中包含的數,單個epoch表示訓練乙個神經網路。換句話說一張只在乙個epoch中輸入到網路中一次。

在測試時影象需要轉化解析度到64*64,然後使用predict()方法得到**。

原文:

狗貓分類資料集劃分詳解

資料解壓之後會有兩個資料夾,乙個是 train 乙個是 test 顧名思義乙個是用來訓練的,另乙個是作為檢驗正確性的資料,也是 要求提交標籤的。在train資料夾裡邊是一些已經命名好的影象,有貓也有狗 而在test資料夾中是只有編號名的影象 大致了解了資料集後,下邊就開始劃分資料集 先放一段 這是從...

使用的貓和狗

雖然這兩個例子只使用的貓和狗,其他類我們從動物的工作也將與我們的report 功能和動物陣列不進一步修改!這也許是虛函式,在這樣一種方式,新派生的類會自動工作,與舊 無需修改你的 的能力結構的最大效益!一句警告 派生類的函式的簽名必須與基類的虛函式的派生類的函式中使用的順序簽名完全匹配。如果派生類函...

深度學習4 卷積神經網kaggle貓狗分類(3)

上接分類2.from keras import optimizers model.compile loss binary crossentropy optimizer optimizers.rmsprop lr 1e 4 metrics acc 要用sigmoid做二分類的問題,還是老生常談的rms...