n乘线性变换的多变量梯度下降

时间:2015-10-25 02:19:49

标签: python matrix gradient-descent

我有一组训练数据,输入(数据[' qvec'])和输出(数据[' tvec'])是标准化的300维向量。我想训练线性变换,即300x300矩阵,以最小化成本函数:

from scipy.spatial.distance import cosine

def cost_function(data, theta):
    dists =  [cosine(data.iloc[i]['qvec'].dot(theta), data.iloc[i]['tvec']) for i in data.index]
    return sum(dists)/len(data)

我假设会有一个类似于多变量梯度下降的更新功能。那就是:

def update_theta(data, theta, alpha):
    for m in range(300):
        for n in range(300):
            cost = [(data.iloc[i]['qvec'].dot(theta) - data.iloc[i]['tvec']) * ???? 
                        for i in data.index]
            theta[m,n] = theta[m,n] - alpha/len(data) * sum(cost)
    return theta

我知道当θ是300x1矩阵时,????是data.iloc [i] [' qvec'] [m],但300x300矩阵会是什么?如果我的方法已经取消,或者已经有了一个包装,我也很感激,如果有人指出我正确的方向。

0 个答案:

没有答案