深度學習基礎課:“判斷性別”Demo需求分析和初步設計(上)
大家好~我開設了“深度學習基礎班”的線上課程,帶領同學從0開始學習全連接和卷積神經網絡,進行數學推導,并且實現可以運行的Demo程序
線上課程資料:
本節課錄像回放
掃碼加QQ群,獲得ppt等資料,與群主交流討論:

本系列文章為線上課程的復盤,每上完一節課就會同步發布對應的文章
本文為第二節課:“判斷性別”Demo需求分析和初步設計(上)的復盤文章
本課程系列文章可進入索引查看:
深度學習基礎課系列文章索引
為什么要學習本課?
- 什么是神經元?
- 如何根據一個人的身高和體重,使用神經元推測出該人的性別?
回顧相關課程內容
- 第一節課:課程介紹
- 深度學習在圖形學中有什么應用?
主問題:Demo需求分析
- 需求是什么?
答:給出一個人的身高、體重,能夠通過深度學習推測出他的性別
主問題:什么是神經元?
-
什么是神經元?
答:
如上圖所示,一個神經元具有一個偏移值b和多個權重值w,接受多個輸入值x,返回一個輸出值y -
計算公式是什么?
答:
主問題:如何使用神經元實現Demo?
- 已知一個人的身高為150厘米,體重為50公斤,如何使用神經元得到該人的性別(應該為女性)?
- 神經元的輸入和輸出是什么?
答:輸入為身高和體重,輸出為性別 - 如何處理數據?
答:性別表示為0(男)、1(女) - 激活函數應該是什么?
答:返回1的任意函數 - 需要知道神經元的哪些值?
答:權重、偏移 - 值是多少?
答:有任意多個解,其中一個解為:

- 神經元的輸入和輸出是什么?
任務:給出代碼
- 輸入的數據稱為樣本
- 求神經元的權重、偏移的過程叫做訓練
- 根據樣本和權重、偏移,代入激活函數得到輸出值的過程叫做推理
- 請用代碼實現?
答:
type state = {
weight1: float,
weight2: float,
bias: float,
}
type sampleData = {
weight: float,
height: float,
}
type gender =
| Male
| Female
let createState = (): state => {
weight1: Js.Math.random(),
weight2: Js.Math.random(),
bias: Js.Math.random(),
}
let train = (state: state, sampleData: sampleData): state => {
{
weight1: 1.0,
weight2: -2.0,
bias: -49.0,
}
}
let _activateFunc = x => x
let _convert = x =>
switch x {
| 0. => Male
| 1. => Female
}
let inference = (state: state, sampleData: sampleData): gender => {
(sampleData.height *. state.weight1 +. sampleData.weight *. state.weight2 +. state.bias)
->_activateFunc
->_convert
}
let state = createState()
let gender =
state
->train({
weight: 50.,
height: 150.,
})
->inference({
weight: 50.,
height: 150.,
})
//1
Js.log(gender)
浙公網安備 33010602011771號