深度学习:损失函数与激活函数全解析

目录

  • 深度学习中常见的损失函数和激活函数详解
    • 引言
    • 一、损失函数详解
      • 1.1 损失函数的作用与分类
      • 1.2 回归任务损失函数
        • 1.2.1 均方误差(MSE)
        • 1.2.2 平均绝对误差(MAE)
      • 1.3 分类任务损失函数
        • 1.3.1 交叉熵损失(Cross-Entropy)
        • 1.3.2 合页损失(Hinge Loss)
      • 1.4 损失函数对比实验
    • 二、激活函数详解
      • 2.1 激活函数的作用与特性
      • 2.2 常见激活函数分析
        • 2.2.1 Sigmoid函数
        • 2.2.2 Tanh函数
        • 2.2.3 ReLU函数
        • 2.2.4 LeakyReLU函数
      • 2.3 激活函数对比实验
    • 三、损失函数与激活函数的组合策略
      • 3.1 常见组合方式
      • 3.2 组合实验分析
    • 四、高级主题与最新进展
      • 4.1 自定义损失函数实现
      • 4.2 激活函数的最新发展
        • 4.2.1 Swish函数
        • 4.2.2 GELU函数
    • 五、完整代码实现
    • 六、总结与最佳实践
      • 6.1 损失函数选择指南
      • 6.2 激活函数选择指南
      • 6.3 组合策略建议

深度学习中常见的损失函数和激活函数详解

引言

在深度学习中,损失函数和激活函数是模型训练过程中两个最核心的组件。损失函数衡量模型预测与真实值之间的差异,为优化算法提供方向;而激活函数为神经网络引入非线性能力,使网络能够学习复杂模式。本文将全面解析深度学习中常见的损失函数和激活函数,包括数学原理、特性分析、适用场景以及Python实现,并通过实验对比不同组合的效果。

一、损失函数详解

1.1 损失函数的作用与分类

损失函数(Loss Function)是用于衡量模型预测输出与真实值之间差异的函数,其数学表示为:
L ( θ ) = 1 N ∑ i = 1 N ℓ ( y i , f ( x i ; θ ) ) \mathcal{L}(\theta) = \frac{1}{N}\sum_{i=1}^N \ell(y_i, f(x_i; \theta)) L(θ)=N1i=1N(yi,f(xi;θ))

根据任务类型,损失函数主要分为三类:

损失函数
回归任务
分类任务
生成任务

1.2 回归任务损失函数

1.2.1 均方误差(MSE)

数学表达式:
MSE = 1 N ∑ i = 1 N ( y i − y ^ i ) 2 \text{MSE} = \frac{1}{N}\sum_{i=1}^N (y_i - \hat{y}_i)^2 MSE=N1i=1N(yiy^i)2

特性分析:

  • 对异常值敏感
  • 可导且处处平滑
  • 输出值域:[0, +∞)

Python实现:

def mean_squared_error(y_true, y_pred):"""计算均方误差(MSE)参数:y_true: 真实值数组,形状(n_samples,)y_pred: 预测值数组,形状(n_samples,)返回:mse值"""return np.mean(np.square(y_true - y_pred))
1.2.2 平均绝对误差(MAE)

数学表达式:
MAE = 1 N ∑ i = 1 N ∣ y i − y ^ i ∣ \text{MAE} = \frac{1}{N}\sum_{i=1}^N |y_i - \hat{y}_i| MAE=N1i=1Nyiy^i

特性分析:

  • 对异常值鲁棒
  • 在0点不可导
  • 输出值域:[0, +∞)

Python实现:

def mean_absolute_error(y_true, y_pred):"""计算平均绝对误差(MAE)参数:y_true: 真实值数组,形状(n_samples,)y_pred: 预测值数组,形状(n_samples,)返回:mae值"""return np.mean(np.abs(y_true - y_pred))

1.3 分类任务损失函数

1.3.1 交叉熵损失(Cross-Entropy)

二分类表达式:
L = − 1 N ∑ i = 1 N [ y i log ⁡ ( y ^ i ) + ( 1 − y i ) log ⁡ ( 1 − y ^ i ) ] \mathcal{L} = -\frac{1}{N}\sum_{i=1}^N [y_i \log(\hat{y}_i) + (1-y_i)\log(1-\hat{y}_i)] L=N1i=1N[yilog(y^i)+(1yi)log(1y^i)]

多分类表达式:
L = − 1 N ∑ i = 1 N ∑ c = 1 C y i , c log ⁡ ( y ^ i , c ) \mathcal{L} = -\frac{1}{N}\sum_{i=1}^N \sum_{c=1}^C y_{i,c} \log(\hat{y}_{i,c}) L=N1i=1Nc=1Cyi,clog(y^i,c)

Python实现:

def cross_entropy_loss(y_true, y_pred, epsilon=1e-12):"""计算交叉熵损失参数:y_true: 真实标签,形状(n_samples, n_classes)或(n_samples,)y_pred: 预测概率,形状(n_samples, n_classes)epsilon: 小常数防止log(0)返回:交叉熵损失值"""# 确保预测值在(0,1)区间y_pred = np.clip(y_pred, epsilon, 1. - epsilon)# 如果是二分类且y_true为一维if len(y_true.shape) == 1 or y_true.shape[1] == 1:loss = -np.mean(y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred))else:  # 多分类loss = -np.mean(np.sum(y_true * np.log(y_pred), axis=1))return loss
1.3.2 合页损失(Hinge Loss)

数学表达式:
L = 1 N ∑ i = 1 N max ⁡ ( 0 , 1 − y i ⋅ y ^ i ) \mathcal{L} = \frac{1}{N}\sum_{i=1}^N \max(0, 1 - y_i \cdot \hat{y}_i) L=N1i=1Nmax(0,1yiy^i)

Python实现:

def hinge_loss(y_true, y_pred):"""计算合页损失(Hinge Loss)参数:y_true: 真实标签(±1),形状(n_samples,)y_pred: 预测值,形状(n_samples,)返回:hinge loss值"""return np.mean(np.maximum(0, 1 - y_true * y_pred))

1.4 损失函数对比实验

import matplotlib.pyplot as plt# 生成模拟数据
y_true = np.linspace(-3, 3, 100)
y_pred = np.zeros_like(y_true)# 计算不同损失
mse = [mean_squared_error(np.array([t]), np.array([p])) for t, p in zip(y_true, y_pred)]
mae = [mean_absolute_error(np.array([t]), np.array([p])) for t, p in zip(y_true, y_pred)]
hinge = [hinge_loss(np.array([1]), np.array([t])) for t in y_true]  # 假设真实标签为1# 绘制曲线
plt.figure(figsize=(10, 6))
plt.plot(y_true, mse, label='MSE')
plt.plot(y_true, mae, label='MAE')
plt.plot(y_true, hinge, label='Hinge (y_true=1)')
plt.xlabel('Prediction - True Value')
plt.ylabel('Loss')
plt.title('Comparison of Loss Functions')
plt.legend()
plt.grid(True)
plt.show()

二、激活函数详解

2.1 激活函数的作用与特性

激活函数的主要作用:

  1. 引入非线性变换
  2. 决定神经元是否被激活
  3. 影响梯度传播过程

理想激活函数应具备的特性:

  • 非线性
  • 可微性(至少几乎处处可微)
  • 单调性
  • 输出范围适当

2.2 常见激活函数分析

2.2.1 Sigmoid函数

数学表达式:
σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+ex1

特性分析:

  • 输出范围:(0,1)
  • 容易导致梯度消失
  • 输出不以0为中心

Python实现:

def sigmoid(x):"""Sigmoid激活函数参数:x: 输入数组返回:sigmoid激活后的输出"""return 1 / (1 + np.exp(-x))def sigmoid_derivative(x):"""Sigmoid函数的导数"""s = sigmoid(x)return s * (1 - s)
2.2.2 Tanh函数

数学表达式:
tanh ⁡ ( x ) = e x − e − x e x + e − x \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} tanh(x)=ex+exexex

特性分析:

  • 输出范围:(-1,1)
  • 以0为中心
  • 比sigmoid梯度更强

Python实现:

def tanh(x):"""Tanh激活函数"""return np.tanh(x)def tanh_derivative(x):"""Tanh函数的导数"""return 1 - np.tanh(x)**2
2.2.3 ReLU函数

数学表达式:
ReLU ( x ) = max ⁡ ( 0 , x ) \text{ReLU}(x) = \max(0, x) ReLU(x)=max(0,x)

特性分析:

  • 计算简单
  • 缓解梯度消失
  • 存在"死亡ReLU"问题

Python实现:

def relu(x):"""ReLU激活函数"""return np.maximum(0, x)def relu_derivative(x):"""ReLU函数的导数"""return (x > 0).astype(float)
2.2.4 LeakyReLU函数

数学表达式:
LeakyReLU ( x ) = { x if  x > 0 α x otherwise \text{LeakyReLU}(x) = \begin{cases} x & \text{if } x > 0 \\ \alpha x & \text{otherwise} \end{cases} LeakyReLU(x)={xαxif x>0otherwise

Python实现:

def leaky_relu(x, alpha=0.01):"""LeakyReLU激活函数参数:x: 输入数组alpha: 负半轴的斜率"""return np.where(x > 0, x, alpha * x)def leaky_relu_derivative(x, alpha=0.01):"""LeakyReLU函数的导数"""dx = np.ones_like(x)dx[x < 0] = alphareturn dx

2.3 激活函数对比实验

# 生成输入数据
x = np.linspace(-5, 5, 100)# 计算各激活函数输出
y_sigmoid = sigmoid(x)
y_tanh = tanh(x)
y_relu = relu(x)
y_leaky = leaky_relu(x)# 绘制曲线
plt.figure(figsize=(12, 6))
plt.plot(x, y_sigmoid, label='Sigmoid')
plt.plot(x, y_tanh, label='Tanh')
plt.plot(x, y_relu, label='ReLU')
plt.plot(x, y_leaky, label='LeakyReLU (α=0.01)')
plt.xlabel('Input')
plt.ylabel('Output')
plt.title('Comparison of Activation Functions')
plt.legend()
plt.grid(True)
plt.show()

三、损失函数与激活函数的组合策略

3.1 常见组合方式

任务类型推荐损失函数推荐激活函数说明
二分类二元交叉熵Sigmoid输出层使用Sigmoid
多分类分类交叉熵Softmax输出层使用Softmax
回归MSE/MAE无/线性输出层通常不使用激活
多标签分类二元交叉熵Sigmoid每个输出节点独立

3.2 组合实验分析

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import pandas as pd# 创建分类数据集
X, y = make_classification(n_samples=1000, n_features=20, n_classes=2, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 测试不同组合
combinations = [{'loss': 'binary_crossentropy', 'output_activation': 'sigmoid'},{'loss': 'hinge', 'output_activation': 'tanh'},{'loss': 'mse', 'output_activation': 'sigmoid'}
]results = []for combo in combinations:model = Sequential([Dense(64, activation='relu', input_shape=(20,)),Dense(32, activation='relu'),Dense(1, activation=combo['output_activation'])])model.compile(optimizer='adam',loss=combo['loss'],metrics=['accuracy'])history = model.fit(X_train, y_train,epochs=50,batch_size=32,validation_split=0.2,verbose=0)test_loss, test_acc = model.evaluate(X_test, y_test, verbose=0)results.append({'Loss Function': combo['loss'],'Activation': combo['output_activation'],'Test Accuracy': test_acc,'Test Loss': test_loss})# 显示结果
df_results = pd.DataFrame(results)
print(df_results[['Loss Function', 'Activation', 'Test Accuracy', 'Test Loss']])

四、高级主题与最新进展

4.1 自定义损失函数实现

import tensorflow as tfdef focal_loss(y_true, y_pred, alpha=0.25, gamma=2.0):"""Focal Loss实现参数:y_true: 真实标签y_pred: 预测概率alpha: 类别平衡参数gamma: 难易样本调节参数返回:focal loss值"""# 防止数值溢出y_pred = tf.clip_by_value(y_pred, 1e-7, 1 - 1e-7)# 计算交叉熵部分cross_entropy = -y_true * tf.math.log(y_pred)# 计算focal weightfocal_weight = alpha * tf.pow(1 - y_pred, gamma)# 计算focal lossloss = focal_weight * cross_entropy# 按样本求和return tf.reduce_sum(loss, axis=-1)# 在Keras模型中使用
model.compile(optimizer='adam',loss=focal_loss,metrics=['accuracy'])

4.2 激活函数的最新发展

4.2.1 Swish函数

数学表达式:
Swish ( x ) = x ⋅ σ ( β x ) \text{Swish}(x) = x \cdot \sigma(\beta x) Swish(x)=xσ(βx)

Python实现:

def swish(x, beta=1.0):"""Swish激活函数参数:x: 输入beta: 可学习参数"""return x * sigmoid(beta * x)def swish_derivative(x, beta=1.0):"""Swish函数的导数"""sig = sigmoid(beta * x)return sig + beta * x * sig * (1 - sig)
4.2.2 GELU函数

数学表达式:
GELU ( x ) = x Φ ( x ) \text{GELU}(x) = x \Phi(x) GELU(x)=xΦ(x)
其中 Φ ( x ) \Phi(x) Φ(x)是标准正态分布的累积分布函数

Python实现:

def gelu(x):"""GELU激活函数"""return 0.5 * x * (1 + tf.math.erf(x / tf.sqrt(2.0)))

五、完整代码实现

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow.keras.layers import Layerclass ActivationFunctions:"""常见激活函数实现集合"""@staticmethoddef sigmoid(x):return 1 / (1 + np.exp(-x))@staticmethoddef tanh(x):return np.tanh(x)@staticmethoddef relu(x):return np.maximum(0, x)@staticmethoddef leaky_relu(x, alpha=0.01):return np.where(x > 0, x, alpha * x)@staticmethoddef swish(x, beta=1.0):return x * ActivationFunctions.sigmoid(beta * x)@staticmethoddef plot_activations(x_range=(-5, 5), n_points=100):"""绘制各激活函数曲线"""x = np.linspace(x_range[0], x_range[1], n_points)plt.figure(figsize=(12, 6))plt.plot(x, ActivationFunctions.sigmoid(x), label='Sigmoid')plt.plot(x, ActivationFunctions.tanh(x), label='Tanh')plt.plot(x, ActivationFunctions.relu(x), label='ReLU')plt.plot(x, ActivationFunctions.leaky_relu(x), label='LeakyReLU (α=0.01)')plt.plot(x, ActivationFunctions.swish(x), label='Swish (β=1.0)')plt.title('Activation Functions Comparison')plt.xlabel('Input')plt.ylabel('Output')plt.legend()plt.grid(True)plt.show()class CustomLossFunctions:"""自定义损失函数集合"""@staticmethoddef focal_loss(y_true, y_pred, alpha=0.25, gamma=2.0):"""Focal Loss实现"""y_pred = tf.clip_by_value(y_pred, 1e-7, 1 - 1e-7)cross_entropy = -y_true * tf.math.log(y_pred)focal_weight = alpha * tf.pow(1 - y_pred, gamma)return tf.reduce_sum(focal_weight * cross_entropy, axis=-1)@staticmethoddef contrastive_loss(y_true, y_pred, margin=1.0):"""对比损失实现"""square_pred = tf.square(y_pred)margin_square = tf.square(tf.maximum(margin - y_pred, 0))return tf.reduce_mean(y_true * square_pred + (1 - y_true) * margin_square)@staticmethoddef plot_losses(y_true=1, pred_range=(-1, 2), n_points=100):"""绘制不同损失函数曲线"""pred = np.linspace(pred_range[0], pred_range[1], n_points)# 计算各损失mse = (pred - y_true)**2mae = np.abs(pred - y_true)hinge = np.maximum(0, 1 - y_true * pred)plt.figure(figsize=(10, 6))plt.plot(pred, mse, label='MSE')plt.plot(pred, mae, label='MAE')plt.plot(pred, hinge, label='Hinge (y_true=1)')plt.title('Loss Functions Comparison (y_true=1)')plt.xlabel('Prediction')plt.ylabel('Loss')plt.legend()plt.grid(True)plt.show()class Swish(Layer):"""可学习的Swish激活层"""def __init__(self, trainable_beta=True, **kwargs):super(Swish, self).__init__(**kwargs)self.trainable_beta = trainable_betaif self.trainable_beta:self.beta = self.add_weight(name='beta',shape=(1,),initializer='ones',trainable=True)else:self.beta = 1.0def call(self, inputs):if self.trainable_beta:return inputs * tf.sigmoid(self.beta * inputs)else:return inputs * tf.sigmoid(inputs)def get_config(self):config = super(Swish, self).get_config()config.update({'trainable_beta': self.trainable_beta})return config# 使用示例
if __name__ == "__main__":# 绘制激活函数ActivationFunctions.plot_activations()# 绘制损失函数CustomLossFunctions.plot_losses()# 构建包含Swish的模型model = tf.keras.Sequential([tf.keras.layers.Dense(64, input_shape=(20,)),Swish(trainable_beta=True),tf.keras.layers.Dense(1, activation='sigmoid')])model.compile(optimizer='adam',loss=CustomLossFunctions.focal_loss,metrics=['accuracy'])print("Model with Swish activation and Focal Loss compiled successfully.")

六、总结与最佳实践

6.1 损失函数选择指南

  1. 分类任务

    • 二分类:二元交叉熵 + Sigmoid
    • 多分类:分类交叉熵 + Softmax
    • 类别不平衡:Focal Loss
  2. 回归任务

    • 一般情况:MSE
    • 存在异常值:MAE或Huber Loss
  3. 特殊任务

    • 度量学习:对比损失
    • 生成对抗网络:Wasserstein Loss

6.2 激活函数选择指南

  1. 隐藏层

    • 首选:ReLU及其变种(LeakyReLU, PReLU)
    • 深层网络:Swish或GELU
    • 需要负值输出:Tanh
  2. 输出层

    • 二分类:Sigmoid
    • 多分类:Softmax
    • 回归:线性(无激活)

6.3 组合策略建议

任务类型
分类?
二分类?
使用MSE/MAE
Sigmoid+交叉熵
Softmax+交叉熵
输出层线性

通过本文的系统分析,读者应该能够根据具体任务选择合适的损失函数和激活函数组合,并理解其背后的数学原理和实现细节。在实际应用中,建议通过实验验证不同组合在特定数据集上的表现,以获得最佳性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/82690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

掌握 npm 核心操作:从安装到管理依赖的完整指南

图为开发者正在终端操作npm命令&#xff0c;图片来源&#xff1a;Unsplash 作为 Node.js 生态的基石&#xff0c;npm&#xff08;Node Package Manager&#xff09;是每位开发者必须精通的工具。每天有超过 1700 万个项目通过 npm 共享代码&#xff0c;其重要性不言而喻。本文…

Elasticsearch的运维

Elasticsearch 运维工作详解&#xff1a;从基础保障到性能优化 Elasticsearch&#xff08;简称 ES&#xff09;作为分布式搜索和分析引擎&#xff0c;其运维工作需要兼顾集群稳定性、性能效率及数据安全。以下从核心运维模块展开说明&#xff0c;结合实践场景提供可落地的方案…

国产三维CAD皇冠CAD(CrownCAD)建模教程:汽车电池

在线解读『汽车电池』的三维建模流程&#xff0c;讲解3D草图、保存实体、拉伸凸台/基体、设置外观等操作技巧&#xff0c;一起和皇冠CAD&#xff08;CrownCAD&#xff09;学习制作步骤吧&#xff01; 汽车电池&#xff08;通常指铅酸蓄电池或锂离子电池&#xff09;是车辆电气系…

深入理解 JDK、JRE 和 JVM 的区别

在 Java 中&#xff0c;JDK、JRE 和 JVM 是非常重要的概念&#xff0c;它们各自扮演着不同的角色&#xff0c;却又紧密相连。今天&#xff0c;就让我们来详细探讨一下它们之间的区别。 一、JVM JVM 即 Java 虚拟机&#xff0c;它是整个 Java 技术体系的核心。JVM 提供了 Java…

云电脑显卡性能终极对决:ToDesk云电脑/顺网云/海马云,谁才是4K游戏之王?

一、引言 1.1 云电脑的算力革命 云电脑与传统PC的算力供给差异 传统PC的算力构建依赖用户一次性配置本地硬件&#xff0c;特别是CPU与显卡&#xff08;GPU&#xff09;。而在高性能计算和游戏图形渲染等任务中&#xff0c;GPU的能力往往成为决定体验上限的核心因素。随着游戏分…

撤销Conda初始化

在安装miniconda3的过程中&#xff0c;最后系统会出现这一行提示用户可以选择自动初始化&#xff0c;这样的话&#xff0c;系统每次启动就会自动启动基础&#xff08;base&#xff09;环境。 但是我们也可以通过 conda init --reverse $shell 来撤销 Conda 的初始化设置。这将恢…

Flask-SQLAlchemy数据库查询:query

1、为什么可以用 模型类.query 来查询数据库&#xff1f; 在 Flask 中使用 SQLAlchemy ORM 时&#xff0c;所有继承自 db.Model 的模型类都会自动获得一个 query 属性。 其本质是 db.session.query(模型类) 的快捷方式&#xff0c;无需显式操作 db.session。 代码示例&#…

【免费】【无需登录/关注】度分秒转换在线工具

UVE Toolbox 功能概述 这是一个用于地理坐标转换的在线工具&#xff0c;支持两种转换模式&#xff1a; 十进制度 → 度分秒 度分秒 → 十进制度 使用方法 十进制度转度分秒 在"经度"输入框中输入十进制度格式的经度值&#xff08;例如&#xff1a;121.46694&am…

怎么判断一个Android APP使用了React Native 这个跨端框架

要判断一个 Android 应用是否使用了 React Native 框架&#xff0c;可以通过以下方法逐步验证&#xff1a; 一、安装包结构分析 1. 解压 APK 将 .apk 文件重命名为 .zip 并解压&#xff0c;检查以下特征文件&#xff1a; • assets/index.android.bundle&#xff1a; React Na…

Pluto实验报告——基于2ASK的简易的通信系统

一、实验目的 1. 熟悉并掌握PLUTO SDR 主动学习模块的使用&#xff1b; 2.通过matlab 编码与adalm pluto 相配合达成一个简易的通信系统&#xff0c;并能 够传输一些较为简单的信息。 二、实验原理 2ASK 调制原理&#xff1a; 振幅键控是指利用载波的振幅变化来传递数字基带信…

Ubuntu 24-部署FTP和自定义用户

目录 一、 安装 vsftpd 二、创建 FTP 数据目录 三、创建 FTP 用户 四、配置 vsftpd 五、重启 vsftpd 服务 六、增加新用户脚本 一、 安装 vsftpd sudo apt update sudo apt install vsftpd -y 二、创建 FTP 数据目录 sudo mkdir -p /data/ftp sudo chown nobody:nogrou…

MySQL问题:什么是MySQL的中的最左匹配原则?

是指在复合索引中&#xff0c;查询条件需要按照索引列的顺序从最左侧列开始依次匹配。只有查询条件中的列按照索引的最左边列开始进行匹配&#xff0c;索引才能被有效使用&#xff0c;但有时虽然不是正常顺序&#xff0c;由于MySQL中存在优化器&#xff0c;会自动调整顺序&…

2025软考软件设计师题目

选择题&#xff08;综合题&#xff09; 确定得分的 1、Linux外设目录是什么 /dev。存储磁盘的目录 2、Linux外设sdc类型设备属于什么 scsi hard disk。根据第一个字母s盲猜的 3、计算机中让程序计数器PC不能指向当前运行程序的技术是 流水线。根据流水线的原理 4、Python程…

Deep Evidential Regression

摘要 翻译&#xff1a; 确定性神经网络&#xff08;NNs&#xff09;正日益部署在安全关键领域&#xff0c;其中校准良好、鲁棒且高效的不确定性度量至关重要。本文提出一种新颖方法&#xff0c;用于训练非贝叶斯神经网络以同时估计连续目标值及其关联证据&#xff0c;从而学习…

每天掌握一个Linux命令 - sqlite3

Linux 命令工具 sqlite3 使用指南 一、工具概述 sqlite3 是 SQLite 数据库的命令行工具&#xff0c;用于在 Linux 系统中直接操作 SQLite 数据库&#xff08;轻量级、无服务器、嵌入式关系型数据库&#xff09;。 核心特点&#xff1a; 无需安装数据库服务&#xff0c;直接通…

leetcode:2160. 拆分数位后四位数字的最小和(python3解法,数学相关算法题)

难度&#xff1a;简单 给你一个四位 正 整数 num 。请你使用 num 中的 数位 &#xff0c;将 num 拆成两个新的整数 new1 和 new2 。new1 和 new2 中可以有 前导 0 &#xff0c;且 num 中 所有 数位都必须使用。 比方说&#xff0c;给你 num 2932 &#xff0c;你拥有的数位包括…

Python打卡第38天

浙大疏锦行 作业&#xff1a; 了解下cifar数据集&#xff0c;尝试获取其中一张图片 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader , Dataset # DataLoader 是 PyTorch 中用于加载数据的工具 from torchvision im…

AI 数据采集实战指南:基于 Bright Data 快速获取招标讯息

AI 数据采集实战指南&#xff1a;基于Bright Data快速获取招标讯息 在招标行业中&#xff0c;快速、准确地获取招标公告、项目详情、投标截止日期和其他关键招标信息&#xff0c;是投标企业提高竞标成功率的核心竞争力。然而&#xff0c;招标信息往往分散在不同的平台和网页&a…

TCP 三次握手,第一次握手报文丢失会发生什么?

文章目录 RTO(Retransmission Timeout)注意 客户端想与服务端建立 TCP 连接时&#xff0c;先发送 SYN 报文&#xff0c;在这之后&#xff0c;如果客户端迟迟收不到服务端的 SYNACK 报文&#xff0c;就会触发「超时重传」机制&#xff0c;重新发送 SYN 报文&#xff0c;而且重传…

【DeepSeek论文精读】12. DeepSeek-Prover-V2: 通过强化学习实现子目标分解的形式化数学推理

欢迎关注[【AIGC论文精读】](https://blog.csdn.net/youcans/category_12321605.html&#xff09;原创作品 【DeepSeek论文精读】1. 从 DeepSeek LLM 到 DeepSeek R1 【DeepSeek论文精读】10. DeepSeek-Coder-V2: 突破闭源模型在代码智能领域的障碍 【DeepSeek论文精读】12. De…