1. 程式人生 > >深度學習筆記——線性單元和梯度下降

深度學習筆記——線性單元和梯度下降

程式碼參考了零基礎入門深度學習(2) - 線性單元和梯度下降這篇文章,我只對程式碼裡可能存在的一些小錯誤進行了更改。至於線性單元的原理以及程式碼裡不清楚的地方可以結合該文章理解,十分淺顯易懂。

from DL.perceptron import Perceptron

# 定義啟用函式f
f = lambda x:x

class LinearUnit(Perceptron):
    def __init__(self,input_num):
        '''
        param input_num: 初始化線性單元,設定輸入引數的個數
        '''
        Perceptron.__init__(self,input_num,f)

def get_training_dataset():
    '''
    捏造5個人的收入資料
    '''
    # 構建訓練資料
    # 輸入向量列表,每一項是工作年限
    input_vecs = [[5],[3],[8],[1.4],[10.1]]
    # 期望的輸出列表,月薪,注意要與輸入一一對應
    labels = [5500,2300,7600,1800,11400]
    return input_vecs,labels

def train_linear_unit():
    '''
    使用資料訓練線性單元
    '''
    # 建立感知機,輸入引數的特徵數為1(工作年限)
    lu = LinearUnit(1)
    # 訓練,迭代10輪,學習速率為0.01
    input_vecs,labels = get_training_dataset()
    lu.train(input_vecs,labels,10,0.01)
    # 返回訓練好的線性單元
    return lu

if __name__ == '__main__':
    '''
    訓練線性單元
    '''
    linear_unit = train_linear_unit()
    # 列印獲得的權重
    print(linear_unit)
    print('work 3.4 years, monthly salary = %.2f' %linear_unit.predict([3.4]))
    print('work 15 years, monthly salary = %.2f' %linear_unit.predict([15]))
    print('work 1.5 years, monthly salary = %.2f' %linear_unit.predict([1.5]))
    print('work 6.3 years, monthly salary = %.2f' %linear_unit.predict([6.3]))