天天看点

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

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

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

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

     目录             

        背景

        正文

        总结

背景描述

不用梯度下降也能求解权重
一直想和困惑的是为什么深度学习需要 梯度下降 ,有没有 可以替代的方法终于在使用 等比向量  解决了一个输入输出 只能求解一个权重解的时候,发现可以 求解权重个行数的通解,虽然暂时不能像梯度下降那样求解,多个权重层 ,但是单一的权重层是可以求解的,可以 增加权重的行数来 增加权重的表达能力
不用梯度下降也能求解权重

正文

下面是写了一个求解的简单例子,由于等差向量求解只能针对一个数据,说以就不写例子了

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)      

总结

        这个应该可以解决一些,拟合的问题的求解,至少不需要 梯度下降了,也提供了一个

        拟合求解的新思路,或许你的大脑就是这样的确定性的求解不断的拼接而成的。比起梯度

  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由东方佑原创
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨