Deep Learning 学习笔记(一):softmax Regression及Python实现

茫然中不知道该做什么,更看不到希望。

  偶然看到coursera上有Andrew Ng教授的机器学习课程以及他UFLDL上的深度学习课程,于是静下心来,视频一个个的看,作业一个一个的做,程序一个一个的写。N多数学的不懂、Matlab不熟悉,开始的时候学习进度慢如蜗牛,坚持了几个月,终于也学完了。为了避免遗忘,在这里记下一些内容。由于水平有限,Python也不是太熟悉,英语也不够好,有错误或不当的地方,请不吝赐教。

 对于softmax背后的理论还不是很清楚,不知道是来自信息论还是概率。不过先了解个大概,先用起来,背后的理论再慢慢补充。

  softmax的基本理论:

  对于给定的输入x和输出有,K类分类器每类的概率为P(y=k|x,Θ),即

模型参数 θ(1),θ(2),,θ(K)Rn ,矩阵θ以K*n的形式比较方便(其中n为输入x的维度或特征数)。

   softmax回归的代价函数:

其中1{y(i)=k}为指示函数,即y(i)为k时其值为1,否则为0,或则说括号内的表达式为真时其值为1,否则为0.


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python实现softmax regression(也称为多类别逻辑回归)可以使用NumPy库来进行数值计算。下面是一个简单的示例代码: ```python import numpy as np def softmax_regression(X, y, num_classes, learning_rate, num_iterations): num_features = X.shape[1] theta = np.zeros((num_features, num_classes)) for i in range(num_iterations): scores = np.dot(X, theta) exp_scores = np.exp(scores) probs = exp_scores / np.sum(exp_scores, axis=1, keepdims=True) # 计算损失函数 loss = -np.log(probs[range(len(X)), y]) data_loss = np.sum(loss) / len(X) # 计算梯度 d_probs = probs d_probs[range(len(X)), y] -= 1 d_probs /= len(X) d_theta = np.dot(X.T, d_probs) # 更新参数 theta -= learning_rate * d_theta return theta # 示例数据 X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]) y = np.array([0, 1, 2, 1]) # 调用softmax_regression函数进行训练 num_classes = len(np.unique(y)) learning_rate = 0.01 num_iterations = 1000 theta = softmax_regression(X, y, num_classes, learning_rate, num_iterations) print("训练得到的参数theta:") print(theta) ``` 这段代码实现softmax regression的训练过程。首先,定义了一个softmax_regression函数,该函数接受输入特征矩阵X、标签向量y、类别数量num_classes、学习率learning_rate和迭代次数num_iterations作为参数。在函数内部,首先初始化参数theta为全零矩阵。然后,通过迭代更新参数theta,直到达到指定的迭代次数。在每次迭代中,计算得分矩阵scores、概率矩阵probs和损失函数loss。然后,计算梯度d_theta,并使用学习率更新参数theta。最后,返回训练得到的参数theta。 在示例数据部分,定义了一个简单的输入特征矩阵X和标签向量y。调用softmax_regression函数进行训练,并打印训练得到的参数theta。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值