Python影像處理(14):神經網路分類器

來源:互聯網
上載者:User

標籤:vs2013   opencv   python   影像處理   

快樂蝦

http://blog.csdn.net/lights_joy/

歡迎轉載,但請保留作者資訊


在opencv中支援神經網路分類器,本文嘗試在python中調用它。


和前面的貝葉斯分類器一樣,神經網路也遵循先訓練再使用的方式,我們直接在貝葉斯分類器的測試代碼上做簡單修改,完成兩類資料點的分類。


首先也是先建立訓練用的資料:


# 訓練的點數train_pts = 30# 建立測試的資料點,2類# 以(-1.5, -1.5)為中心rand1 = np.ones((train_pts,2)) * (-2) + np.random.rand(train_pts, 2)print(‘rand1:‘)print(rand1)# 以(1.5, 1.5)為中心rand2 = np.ones((train_pts,2)) + np.random.rand(train_pts, 2)print(‘rand2:‘)print(rand2)# 合并隨機點,得到訓練資料train_data = np.vstack((rand1, rand2))train_data = np.array(train_data, dtype=‘float32‘)train_label = np.vstack( (np.zeros((train_pts,1), dtype=‘float32‘), np.ones((train_pts,1), dtype=‘float32‘)))# 顯示訓練資料plt.figure(1)plt.plot(rand1[:,0], rand1[:,1], ‘o‘)plt.plot(rand2[:,0], rand2[:,1], ‘o‘)

類似這樣的資料:



在得到訓練資料後,接著建立一個網路並配置訓練參數:


# 建立網路ann = cv2.ml.ANN_MLP_create()ann.setLayerSizes(np.array([2, 10, 10, 1]))  # 必須首先執行此行ann.setActivationFunction(cv2.ml.ANN_MLP_SIGMOID_SYM)ann.setTrainMethod(cv2.ml.ANN_MLP_BACKPROP)ann.setBackpropWeightScale(0.1)ann.setBackpropMomentumScale(0.1)

由於我們的輸入是資料點的座標值,輸出是此資料點所屬的類別,因此這個網路的輸入層有2個節點,輸出則只有一個節點。中間有兩個隱層,各有10個節點。


接著我們對此網路進行訓練:

# 訓練ret = ann.train(train_data, cv2.ml.ROW_SAMPLE, train_label)

在訓練完成後就可以使用測試資料進行預測了:

# 測試資料,20個點[-2,2]pt = np.array(np.random.rand(20,2) * 4 - 2, dtype=‘float32‘)(ret, res) = ann.predict(pt)

predict通過res返回得到一個20x1的數組,每一行對應一個輸入焦點,由於我們選擇sigmoid做為啟用函數,因此計算得到的值是一個介於[0,1]之間的浮點數,我們取0.5為閾值進行分類並顯示結果:

# 按label進行分類顯示plt.figure(2)res = np.hstack((res, res))# 第一類type_data = pt[res < 0.5]type_data = np.reshape(type_data, (type_data.shape[0] / 2, 2))plt.plot(type_data[:,0], type_data[:,1], ‘o‘)# 第二類type_data = pt[res >= 0.5]type_data = np.reshape(type_data, (type_data.shape[0] / 2, 2))plt.plot(type_data[:,0], type_data[:,1], ‘o‘)

看看最後的結果:













??

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Python影像處理(14):神經網路分類器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.