天天看點

不用梯度下降也能求解權重

不用梯度下降也能求解權重

🍿*★,°*:.☆歡迎您/$:*.°★* 🍿

不用梯度下降也能求解權重

     目錄             

        背景

        正文

        總結

背景描述

不用梯度下降也能求解權重
一直想和困惑的是為什麼深度學習需要 梯度下降 ,有沒有 可以替代的方法終于在使用 等比向量  解決了一個輸入輸出 隻能求解一個權重解的時候,發現可以 求解權重個行數的通解,雖然暫時不能像梯度下降那樣求解,多個權重層 ,但是單一的權重層是可以求解的,可以 增權重重的行數來 增權重重的表達能力
不用梯度下降也能求解權重

正文

下面是寫了一個求解的簡單例子,由于等差向量求解隻能針對一個資料,說以就不寫例子了

from sympy import Symbol,solve
import numpy as np
def new_weight(row_dim,col_dim):
    weight=[]
    for i in range(row_dim):
        col_weight=[]
        for j in range(col_dim):
            col_weight.append(Symbol('x{}{}'.format(i,j)))
        weight.append(col_weight)
    return weight
def get_weight(input_data,output_data,weight):
    weight_list=[]
    weight=np.array(weight)
    for j, one_weight in enumerate(weight.transpose([1, 0])):
        f_list = []
        for i,d in enumerate(input_data):
            f=np.sum(one_weight*np.array(d))-output_data[i][j]
            f_list.append(f)
        res_weight=solve(f_list,one_weight.tolist())
        weight_list.append(list(res_weight.values()))
    return np.array(weight_list).astype("float").transpose([1,0])

if __name__ == '__main__':
    weight=new_weight(2,4)
    # 權重有2行 是以隻需兩資料方可解方程得到 所有權重參數
    input_data=[[3,6],[5,9]]
    output_data=[[7,9,12,14],[14,18,24,28]]
    # 求解weight
    weight_data=get_weight(input_data,output_data,weight)
    # 結果驗證
    print(np.array(input_data)@weight_data)      

總結

        這個應該可以解決一些,拟合的問題的求解,至少不需要 梯度下降了,也提供了一個

        拟合求解的新思路,或許你的大腦就是這樣的确定性的求解不斷的拼接而成的。比起梯度

  • 📢歡迎點贊 👍 收藏 ⭐留言 📝 如有錯誤敬請指正!
  • 📢本文由東方佑原創
  • 📢停下休息的時候不要忘了别人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活✨