# 实现一个densenet的网络,并插入到slim框架中进行训练
**Repository Path**: edwinjiang703/denseness
## Basic Information
- **Project Name**: 实现一个densenet的网络,并插入到slim框架中进行训练
- **Description**: 根据论文实现Dense Net网络结构,并于Incetptionv3网络性能做对比
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2018-07-08
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 实现一个densenet的网络,并插入到slim框架中进行训练
### 代码部分:
densenet.py是 Dense Net的实现文件
train_image_classifier.py slim框架下训练模型
nets_factory.py 将dense net模型放到slim框架下
train_densenet_on_cifar10.sh 模型测试脚本
训练结果.doc. 训练结果文件
### 代码说明:
1 实现三层的dense block
2 第一的dense block有6层。第二个dense block有12层,第三个dense block有24层。第四个dense block有16层
3 模型K值是24,压缩比是0.5
4 每个dense block中分别实现1*1和3*3的组合处理(BN——Relu--Conv2d--DropOut)
5 transaction layer用 1*1的卷积加上2*2的池化处理
将densenet.py文件拷贝到nets目录下。同时修改nets_factory.py文件,将densenet添加进去。train_densenet_on_cifar10.sh文件里包含了训练命令:
# Run training.
python train_image_classifier.py \
--train_dir=${TRAIN_DIR} \
--dataset_name=cifar10 \
--dataset_split_name=train \
--dataset_dir=${DATASET_DIR} \
--model_name=densenet \
--preprocessing_name=cifarnet \
--max_number_of_steps=100000 \
--batch_size=128 \
--save_interval_secs=120 \
--save_summaries_secs=120 \
--log_every_n_steps=100 \
--optimizer=sgd \
--learning_rate=0.1 \
--learning_rate_decay_factor=0.1 \
--num_epochs_per_decay=200 \
--weight_decay=0.004 \
--clone_on_cpu=True
### 网络的一些理解:
Growth Rate: 即K值
这个参数需要根据训练的数据来确定,比如这次实验用的是cifa的数据集。当把grow调整到48的时候。训练不出来了。recall的值没有。个人认为是cifa的数据集是32*32的。可能一张图的特征没有48那么多。过多的grow,可能会带来噪声,导致训练不出来结果。并且训练的时间会大幅度增加。
Dense(稠密)的理解
Dense网络,之所以叫稠密。个人认为和其每层的输入特征数量和其他网络不一样,dense的每层输入都作为其他层的输入。每层的输入特征大概是
k+K*(L-1)个特征。所以这个网络需要对特征进行降维处理,方便进行计算。比如在transaction layer层就是一个1*1的卷积先进行channel的降维。然后在用2*2的池化进行长、宽的降维。如果在加上bottleneck layer的话。那就是1*1的卷积在加上一个3*3的组合操作((BN——Relu--Conv2d)
注:本次测试由于TinyMind一直跑不起来,环境有问题,所以在本地运行。用的数据集是Cifa的。Data Processing用的也是Cifa的处理过程。本机效率低,运行慢,参数调整困难,导致效果很不好。等TingMind稳定之后会继续进行测试。