类型提示(Type Hints) 是 Python 在语法层面提供的一种 静态类型标注机制,用于描述:
- 变量类型
- 函数参数类型
- 函数返回值类型
- 复杂数据结构的组成类型
相关信息
类型提示 不会影响 Python 的运行时行为,其主要作用对象是:
- 开发者
- IDE
- 静态类型检查工具
2026/1/23大约 1 分钟
类型提示(Type Hints) 是 Python 在语法层面提供的一种 静态类型标注机制,用于描述:
相关信息
类型提示 不会影响 Python 的运行时行为,其主要作用对象是:
dataclass 是 Python 3.7+ 引入的一个装饰器,用来简化“数据类”的定义。
传统写法:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
Conda 是一个开源的包管理和环境管理工具,主要用于 Python 和数据科学领域。它可以帮助你快速创建独立的虚拟环境,避免依赖冲突,并支持从 conda 仓库或 pip 安装各种软件包。通过 Conda,你可以方便地切换不同项目的运行环境,管理依赖,导出与复现环境,从而让开发过程更加高效和可控。
查看 conda 版本
conda --version
def train_model(model, train_loader, valid_loader, criterion, optimizer, scheduler=None,
num_epochs=300, patience=20, model_save_path='models/best_model.pth'):
"""
通用的 PyTorch 模型训练函数,可选使用学习率调整器。
参数:
- model (nn.Module): 待训练的 PyTorch 模型。
- train_loader (DataLoader): 训练集的数据加载器。
- valid_loader (DataLoader): 验证集的数据加载器。
- criterion (nn.Module): 损失函数,例如 nn.MSELoss。
- optimizer (torch.optim.Optimizer): 优化器,例如 optim.Adam。
- scheduler (torch.optim.lr_scheduler): 可选的学习率调整器,默认为 None。
- num_epochs (int): 最大训练轮数,默认为 300。
- patience (int): 早停的耐心值,连续多少轮验证损失不下降后停止训练,默认为 20。
- model_save_path (str): 模型保存路径,默认为 'models/best_model.pth'。
返回:
- dict: 包含训练和验证损失的字典,格式为 {'train_losses': [...], 'valid_losses': [...]}。
"""
best_val_loss = float('inf')
early_stopping_counter = 0
train_losses, valid_losses = [], []
start_time = time.time()
for epoch in range(num_epochs):
epoch_start_time = time.time()
# 训练模式
model.train()
train_loss = 0.0
for X_batch, y_batch in train_loader:
optimizer.zero_grad()
outputs = model(X_batch)
loss = criterion(outputs, y_batch)
loss.backward()
optimizer.step()
train_loss += loss.item()
train_loss /= len(train_loader)
train_losses.append(train_loss)
# 验证模式
model.eval()
valid_loss = 0.0
with torch.no_grad():
for X_batch, y_batch in valid_loader:
outputs = model(X_batch)
loss = criterion(outputs, y_batch)
valid_loss += loss.item()
valid_loss /= len(valid_loader)
valid_losses.append(valid_loss)
# 调整学习率(如果有设置)
if scheduler:
scheduler.step(valid_loss)
epoch_end_time = time.time()
epoch_time = epoch_end_time - epoch_start_time
print(f"Epoch {epoch + 1}/{num_epochs}, Train Loss: {train_loss:.4f}, Valid Loss: {valid_loss:.4f}, Time: {epoch_time:.2f}s")
# 检查验证损失是否降低
if valid_loss < best_val_loss:
best_val_loss = valid_loss
torch.save(model.state_dict(), model_save_path)
early_stopping_counter = 0
else:
early_stopping_counter += 1
if early_stopping_counter >= patience:
print("Early stopping triggered")
break
total_time = time.time() - start_time
print(f"Training completed. Best validation loss: {best_val_loss:.4f}")
print(f"Total training time: {total_time:.2f}s")
return {'train_losses': train_losses, 'valid_losses': valid_losses}
Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。
1,jupyter notebook是一款编程/文档/笔记/展示软件
2,ipynb后缀结尾的文件并不是一个py文件
3,跟markdown一样 #是一级标题,两个#是二级标题
4,原生NBConvert就是原生的 没有任何格式,跟文本文档一样 写什么是什么
安装Jupyter Notebook的前提是需要安装了Python环境(3.3版本及以上,或2.7版本)
Pandas 是 Python 的第三方库,为 Python 提供了高性能且易用的数据结构与数据分析工具。其核心数据结构 DataFrame 与 Series,能够高效处理各类结构化数据,广泛应用于数据清洗、分析、可视化等数据科学领域。
import pandas as pd
pd.options.display.max_columns = None # 设置打印所有列
print()
a = input("提示输入内容")
# map()输入
a, b, c = map(int, input().split())