# Basic_CNNs_TensorFlow2
**Repository Path**: xxuffei/Basic_CNNs_TensorFlow2
## Basic Information
- **Project Name**: Basic_CNNs_TensorFlow2
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-03-17
- **Last Updated**: 2021-03-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Basic_CNNs_TensorFlow2
A tensorflow2 implementation of some basic CNNs.
## Networks included:
+ MobileNet_V1
+ MobileNet_V2
+ [MobileNet_V3](https://github.com/calmisential/MobileNetV3_TensorFlow2)
+ [EfficientNet](https://github.com/calmisential/EfficientNet_TensorFlow2)
+ [ResNeXt](https://github.com/calmisential/ResNeXt_TensorFlow2)
+ [InceptionV4, InceptionResNetV1, InceptionResNetV2](https://github.com/calmisential/InceptionV4_TensorFlow2)
+ SE_ResNet_50, SE_ResNet_101, SE_ResNet_152, SE_ResNeXt_50, SE_ResNeXt_101
+ SqueezeNet
+ [DenseNet](https://github.com/calmisential/DenseNet_TensorFlow2)
+ ShuffleNetV2
+ [ResNet](https://github.com/calmisential/TensorFlow2.0_ResNet)
## Other networks
For AlexNet and VGG, see : https://github.com/calmisential/TensorFlow2.0_Image_Classification
For InceptionV3, see : https://github.com/calmisential/TensorFlow2.0_InceptionV3
For ResNet, see : https://github.com/calmisential/TensorFlow2.0_ResNet
## Train
1. Requirements:
+ Python >= 3.6
+ Tensorflow >= 2.3.0rc1
2. To train the network on your own dataset, you can put the dataset under the folder **original dataset**, and the directory should look like this:
```
|——original dataset
|——class_name_0
|——class_name_1
|——class_name_2
|——class_name_3
```
3. Run the script **split_dataset.py** to split the raw dataset into train set, valid set and test set. The dataset directory will be like this:
```
|——dataset
|——train
|——class_name_1
|——class_name_2
......
|——class_name_n
|——valid
|——class_name_1
|——class_name_2
......
|——class_name_n
|—-test
|——class_name_1
|——class_name_2
......
|——class_name_n
```
4. Run **to_tfrecord.py** to generate tfrecord files.
5. Change the corresponding parameters in **config.py**.
6. Run **train.py** to start training.
If you want to train the *EfficientNet*, you should change the IMAGE_HEIGHT and IMAGE_WIDTH to *resolution* in the params, and then run **train.py** to start training.
## Evaluate
Run **evaluate.py** to evaluate the model's performance on the test dataset.
## Different input image sizes for different neural networks
| Type | Neural Network | Input Image Size (height * width) |
|---|---|---|
| MobileNet | MobileNet_V1 | (224 * 224) |
| MobileNet_V2 | (224 * 224) | |
| MobileNet_V3 | (224 * 224) | |
| EfficientNet | EfficientNet(B0~B7) | / |
| ResNeXt | ResNeXt50 | (224 * 224) |
| ResNeXt101 | (224 * 224) | |
| SEResNeXt | SEResNeXt50 | (224 * 224) |
| SEResNeXt101 | (224 * 224) | |
| Inception | InceptionV4 | (299 * 299) |
| Inception_ResNet_V1 | (299 * 299) | |
| Inception_ResNet_V2 | (299 * 299) | |
| SE_ResNet | SE_ResNet_50 | (224 * 224) |
| SE_ResNet_101 | (224 * 224) | |
| SE_ResNet_152 | (224 * 224) | SqueezeNet | SqueezeNet | (224 * 224) |
| DenseNet | DenseNet_121 | (224 * 224) |
| DenseNet_169 | (224 * 224) | |
| DenseNet_201 | (224 * 224) | |
| DenseNet_269 | (224 * 224) | |
| ShuffleNetV2 | ShuffleNetV2 | (224 * 224) |
| ResNet | ResNet_18 | (224 * 224) |
| ResNet_34 | (224 * 224) | |
| ResNet_50 | (224 * 224) | |
| ResNet_101 | (224 * 224) | |
| ResNet_152 | (224 * 224) |