基于Pytorch的高效训练、数据增强和工具库
【最新版 v0.1.3】发布 - 包含重大改进、bug修复和更多支持。直接从releases获取或拉取master分支。
这个开源项目提供以下功能:
- 类似Keras的高阶模型训练模块,带回调函数、约束和正则化。
- 全面的数据增强、转换、采样和加载工具。
- 避免频繁依赖numpy的张量和变量实用功能。
有功能需求吗? 提交问题!我将实现它。特别是关于数据增强、数据加载或采样函数的需求。
想要贡献吗? 查看问题页面,寻找标记为“欢迎贡献”的任务。
模块训练器(ModuleTrainer)
ModuleTrainer类提供了高级训练接口,它可以隐藏训练循环,同时提供回调、约束、初始化器和更多功能。
示例代码:
from torchsample.modules import ModuleTrainer
# 定义你的模型,与平常一样
class Network(nn.Module):
# ...定义层...
model = Network()
trainer = ModuleTrainer(model)
trainer.compile(loss='nll_loss', optimizer='adadelta')
trainer.fit(x_train, y_train,
val_data=(x_test, y_test),
num_epoch=20,
batch_size=128,
verbose=1)
此外,还有标准的评估和预测方法:
loss = model.evaluate(x_train, y_train)
y_pred = model.predict(x_train)
Torchsample提供了各种回调函数,模仿Keras中的接口:
EarlyStoppingModelCheckpointLearningRateSchedulerReduceLROnPlateauCSVLogger
以及正则化器:
L1RegularizerL2RegularizerL1L2Regularizer
以及约束:
UnitNormMaxNormNonNeg
两者都可以通过正则表达式和module_filter参数选择性地应用到特定层上。约束可以是硬约束(在任意批次或epoch频率中强制执行),也可以是软约束,即约束偏差作为损失总和的惩罚项。
实用工具函数
Torchsample还提供了一些不常见的实用函数:
- 张量函数,如
th_iterproduct,th_gather_nd,th_random_choice等。 - 变量函数,如
F_affine2d,F_map_coordinates2d等。
数据增强和数据集
该包提供了大量的数据增强和转换工具,可以在数据加载时应用。此外,还有灵活的TensorDataset和FolderDataset类来处理大多数数据集需求。
张量变换(Torch Transforms)
包括但不限于:
Compose()AddChannel()SwapDims()RangeNormalize()StdNormalize()Slice2D()RandomCrop()SpecialCrop()Pad()RandomFlip()ToTensor()
平移变换(Affine Transforms)
例如:
Rotate()Translate()Shear()Zoom()
以及用于组合多个平移变换的类Affine() 和 AffineCompose()。
数据集和采样
TensorDataset()FolderDataset()
致谢
感谢所有贡献者和以下人员:
- 所有Keras贡献者
- @deallynomore
- @recastrodiaz
选择Torchsample,让您的Pytorch项目更高效,训练更简单,数据增强更丰富。立即开始您的深度学习之旅,体验这个强大而全面的库带来的便利吧!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



