亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從頭開始邏輯回歸

從頭開始邏輯回歸

阿波羅的戰車 2023-10-06 19:27:05
我正在 MNIST 數據集上使用梯度下降 + L2 正則化實現多項邏輯回歸。我的訓練數據是一個形狀為(n_samples=1198,features=65)的數據框。在梯度下降的每次迭代中,我采用權重和輸入的線性組合來獲得 1198 次激活 (beta^T * X)。然后我通過 softmax 函數傳遞這些激活。但是,我對如何獲得每個激活的 10 個輸出類的概率分布感到困惑?我的權重是這樣初始化的n_features = 65# init random weightsbeta = np.random.uniform(0, 1, n_features).reshape(1, -1)這是我當前的實現。def softmax(x:np.ndarray):     exps = np.exp(x)    return exps/np.sum(exps, axis=0)def cross_entropy(y_hat:np.ndarray, y:np.ndarray, beta:np.ndarray) -> float:    """    Computes cross entropy for multiclass classification      y_hat: predicted classes, n_samples x n_feats    y: ground truth classes, n_samples x 1    """    n = len(y)    return - np.sum(y * np.log(y_hat) + beta**2 / n)    def gd(X:pd.DataFrame, y:pd.Series, beta:np.ndarray,       lr:float, N:int, iterations:int) -> (np.ndarray,np.ndarray):        """    Gradient descent    """    n = len(y)    cost_history = np.zeros(iterations)        for it in range(iterations):                activations = X.dot(beta.T).values                y_hat = softmax(activations)                        cost_history[it] = cross_entropy(y_hat, y, beta)                        # gradient of weights        grads = np.sum((y_hat - y) * X).values                # update weights        beta = beta - lr * (grads + 2/n * beta)            return beta, cost_history
查看完整描述

1 回答

?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

在多項式 Logistic 回歸中,您需要為每個類提供一組單獨的參數(在您的情況下為像素權重)。然后,實例屬于某個類別的概率被估計為該類別的實例得分的 softmax 函數。softmax 函數確保所有類別的估計概率之和為 1。



查看完整回答
反對 回復 2023-10-06
  • 1 回答
  • 0 關注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號