用于nolearn.lasagne的实用工具
项目描述
# nolearn-utils
[](https://travis-ci.org/felixlaumon/nolearn_utils)
为nolearn.lasagne提供迭代器和处理器,以实现高效的实时图像增强和训练进度监控
## 实时图像增强
- `ShuffleBatchIteratorMixin` 用于打乱训练样本
- `ReadImageBatchIteratorMixin` 将图像文件路径转换为图像,可以是彩色或灰度,并且具有指定的大小
- `RandomFlipBatchIteratorMixin` 随机(均匀)水平或垂直翻转图像
- `AffineTransformBatchIteratorMixin` 对随机选择的图像应用仿射变换(缩放、旋转、平移) - `BufferedBatchIteratorMixin` 在另一个线程中自动执行变换并将结果放入缓冲区(默认大小 = 5)
- `LCNBatchIteratorMixin` 对图像执行局部对比度归一化
- `MeanSubtractBatchIteratorMixin` 从预计算的均值中减去样本
以下是一个使用迭代器的示例
train_iterator_mixins = [
ShuffleBatchIteratorMixin,
ReadImageBatchIteratorMixin,
RandomFlipBatchIteratorMixin,
AffineTransformBatchIteratorMixin,
BufferedBatchIteratorMixin,
]
TrainIterator = make_iterator('TrainIterator', train_iterator_mixins)
train_iterator_kwargs = {
'buffer_size': 5,
'batch_size': batch_size,
'read_image_size': (image_size, image_size),
'read_image_as_gray': False,
'read_image_prefix_path': './data/train/',
'flip_horizontal_p': 0.5,
'flip_vertical_p': 0,
'affine_p': 0.5,
'affine_scale_choices': np.linspace(0.75, 1.25, 5),
'affine_translation_choices': np.arange(-3, 4, 1),
'affine_rotation_choices': np.arange(-45, 50, 5)
}
train_iterator = TrainIterator(**train_iterator_kwargs)
将 `BaseBatchIterator` 从 `nolearn.lasagne` 中修改,为每个迭代提供训练过程的进度条。
## 处理器
- `EarlyStopping` 当损失不再改善时停止训练。
- `StepDecay` 随时间逐渐减少一个参数(例如学习率)。
- `SaveTrainingHistory` 保存训练历史(例如训练损失)。
- `PlotTrainingHistory` 使用 matplotlib 绘制训练损失和验证准确率,在每次迭代后随时间变化。
。
## 示例
示例代码需要 `scikit-learn`。
### MNIST
`example/mnist/train.py` 应该在50个epoch内产生大约99.5%准确率的模型。
MNIST数据可以从
[Kaggle](https://www.kaggle.com/c/digit-recognizer)下载。
### CIFAR10
CIFAR10图像可以从[Kaggle](https://www.kaggle.com/c/cifar-10/data)下载。以下是将下载的数据放置的位置
examples/cifar10
├── data
│ ├── train
│ | ├── 1.png
│ | ├── 2.png
│ | ├── 3.png
│ | ├── ...
│ └── trainLabels.csv
└── train.py
`example/cifat10/train.py` 应该在100个epoch时产生大约85%准确率的模型。图像从磁盘读取并在训练时增强(来自另一个线程)
## TODO
- [ ] 骄傲地并行化转换
## 许可证
MIT & BSD
[](https://travis-ci.org/felixlaumon/nolearn_utils)
为nolearn.lasagne提供迭代器和处理器,以实现高效的实时图像增强和训练进度监控
## 实时图像增强
- `ShuffleBatchIteratorMixin` 用于打乱训练样本
- `ReadImageBatchIteratorMixin` 将图像文件路径转换为图像,可以是彩色或灰度,并且具有指定的大小
- `RandomFlipBatchIteratorMixin` 随机(均匀)水平或垂直翻转图像
- `AffineTransformBatchIteratorMixin` 对随机选择的图像应用仿射变换(缩放、旋转、平移) - `BufferedBatchIteratorMixin` 在另一个线程中自动执行变换并将结果放入缓冲区(默认大小 = 5)
- `LCNBatchIteratorMixin` 对图像执行局部对比度归一化
- `MeanSubtractBatchIteratorMixin` 从预计算的均值中减去样本
以下是一个使用迭代器的示例
train_iterator_mixins = [
ShuffleBatchIteratorMixin,
ReadImageBatchIteratorMixin,
RandomFlipBatchIteratorMixin,
AffineTransformBatchIteratorMixin,
BufferedBatchIteratorMixin,
]
TrainIterator = make_iterator('TrainIterator', train_iterator_mixins)
train_iterator_kwargs = {
'buffer_size': 5,
'batch_size': batch_size,
'read_image_size': (image_size, image_size),
'read_image_as_gray': False,
'read_image_prefix_path': './data/train/',
'flip_horizontal_p': 0.5,
'flip_vertical_p': 0,
'affine_p': 0.5,
'affine_scale_choices': np.linspace(0.75, 1.25, 5),
'affine_translation_choices': np.arange(-3, 4, 1),
'affine_rotation_choices': np.arange(-45, 50, 5)
}
train_iterator = TrainIterator(**train_iterator_kwargs)
将 `BaseBatchIterator` 从 `nolearn.lasagne` 中修改,为每个迭代提供训练过程的进度条。
## 处理器
- `EarlyStopping` 当损失不再改善时停止训练。
- `StepDecay` 随时间逐渐减少一个参数(例如学习率)。
- `SaveTrainingHistory` 保存训练历史(例如训练损失)。
- `PlotTrainingHistory` 使用 matplotlib 绘制训练损失和验证准确率,在每次迭代后随时间变化。
。
## 示例
示例代码需要 `scikit-learn`。
### MNIST
`example/mnist/train.py` 应该在50个epoch内产生大约99.5%准确率的模型。
MNIST数据可以从
[Kaggle](https://www.kaggle.com/c/digit-recognizer)下载。
### CIFAR10
CIFAR10图像可以从[Kaggle](https://www.kaggle.com/c/cifar-10/data)下载。以下是将下载的数据放置的位置
examples/cifar10
├── data
│ ├── train
│ | ├── 1.png
│ | ├── 2.png
│ | ├── 3.png
│ | ├── ...
│ └── trainLabels.csv
└── train.py
`example/cifat10/train.py` 应该在100个epoch时产生大约85%准确率的模型。图像从磁盘读取并在训练时增强(来自另一个线程)
## TODO
- [ ] 骄傲地并行化转换
## 许可证
MIT & BSD