PyTorch logit函数

1.PyTorch vs TensorFlow

tensorflow是静态图,需要你把啥都准备好,然后它像个傻子一样执行,tensorflow,目前业界更适合部署,毕竟是静态图,infer的时候速度快。

pytorch,它会在执行的时候,跟你唠嗑,哪哪需要改不,哦,不改昂,那我执行了,pytorch更适合学术界,因为它更开发、调试更人性化。

(人工智能核心算法的底层还是由C/C++编写,python实际上实现API调用功能)

2.logit函数

该函数可以将输入范围在[0,1]之间的数值p映射到[−∞,∞][−∞,∞]

如果p=0.5,则函数值为0,p<0.5,则函数值为负值;如果p>0.5,则函数值为正值。

PyTorch(tensorflow类似)的损失函数中,有一个(类)损失函数名字中带了with_logits.。而这里的logits指的是,该损失函数已经内部自带了计算logit的操作,无需在传入给这个loss函数之前手动使用sigmoid/softmax将之前网络的输入映射到[0,1]之间。

不管是二分类,还是多分类问题,其实在计算损失函数的过程都经历了三个步骤:

(1)激活函数。通过激活函数sigmoid或者是softmax将输出值缩放到[0,1]之间;

(2)求对数。计算缩放之后的向量的对数值,即所谓的logy的值,求对数之后的值在[-infinite,0]之间;

(3)累加求和。根据损失函数的定义,将标签和输出值逐元素相乘再求和,最后再添加一个负号求相反数,得到一个正数损失。

不管什么样的实现方式,都会经历这三个步骤,不同的是,可能有的函数会将其中的一个或者是几个步骤封装在一起。

例如:

(1)BCELoss:需要先将最后一层经过sigmoid进行缩放然后再通过该函数;

(2)BCEWithLogitsLoss:BCEWithLogitsLoss就是把Sigmoid-BCELoss合成一步,不再需要在最后经过sigmoid进行缩放,直接对最后得到的logits进行处理。

注意:logits,指的是还没有经过sigmoid和softmax缩放的结果

补充:

三维tensor(C,H,W),dim=0,1,2,-1(可理解为维度索引),其中2与-1等价,相同效果:

当dim=0时, 是对每一维度相同位置的数值进行softmax运算,和为1

当dim=1时, 是对某一维度的列进行softmax运算,和为1

当dim=2时, 是对某一维度的行进行softmax运算,和为1

同样的,四维tensor(B,C,H,W)dim取值0,1,2,3,-1,三维tensor也可以看成是batchsize=1的四维tensor,只是dim的索引需要加1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Logistic回归是一种广泛应用于分类问题的线性模型。下面是构Logistic回归模型的一般步骤: 1. 数据准备:首先,准备用于训练和测试的数据集。确保数据集包含特征(自变量)和标签(因变量)。标签通常是二元的(0或1),表示分类的结果。 2. 特征缩放:对于连续型的特征,通常需要进行特征缩放,以确保各个特征具有相同的尺度。常见的缩放方法包括标准化(Z-score标准化)或归一化。 3. 模型构建:使用Logistic回归模型来拟合数据。Logistic回归模型采用线性函数与sigmoid函数的组合,将线性预测转换为概率。 4. 损失函数:使用逻辑损失函数(Log Loss)作为模型的损失函数。逻辑损失函数可以衡量模型预测结果与实际标签之间的差异。 5. 参数优化:通过最小化损失函数来优化模型的参数,常用的方法是梯度下降法(Gradient Descent)。梯度下降法通过迭代更新参数,逐步接近最优解。 6. 模型评估:使用测试集对训练好的模型进行评估,计算准确率、精确率、召回率等指标来评估模型的性能。 7. 可选步骤:可以进行特征选择、交叉验证、调整超参数等步骤来进一步优化模型。 在Python中,你可以使用各种机器学习库来构建Logistic回归模型,如scikit-learn、TensorFlow、PyTorch等。这些库提供了丰富的函数和类来简化模型构建和训练的过程。 下面是一个使用scikit-learn库构建Logistic回归模型的简单示例: ```python from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # 准备数据集 X, y = prepare_data() # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) # 构建Logistic回归模型 model = LogisticRegression() # 拟合数据 model.fit(X_train, y_train) # 预测测试集 y_pred = model.predict(X_test) # 评估模型性能 accuracy = accuracy_score(y_test, y_pred) print("Accuracy:", accuracy) ``` 以上是一个简单的Logistic回归模型构建的示例,你可以根据实际情况进行调整和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值