readme.md
QTFnn-Kits- 一个基于Qt和Tensorflow的CNN学习工具
Tensorflow 1.X, 2.X 是卷积神经网络常用的工具。但一般的学习例子都是配合一些标准测试集合,对迫切需要对接真实应用场景的需求,考虑的不够。
本项目提供了两种使用方式,支持TensorFlow 1.X, 2.X,提供了对网络规模、结构的定制功能。利用界面,就能获得:
- 定制参加一维卷积、二维卷积计算的参数,包括层数、行列、池化等步骤。
- 定制FNN的规模、层数。
- 训练样本按照固定的格式提供,即可立刻进行增量训练、测试与应用。
1. FNN网络结构
quicknn 提供了一个可定制的全连接FNN网络,可以用于函数拟合、回归测试。该网络的定义GUI为 quicknn,参数如下:
- 加载工程。例子在quicknn_example里。
- 设置训练输入,例子在quicknn_example里。
- 设置好脚本文件夹,即可执行训练任务,应用任务,如下图所示:
2. CNN网络结构
mixnn 提供一个可定制的CNN网络。可用于图象识别。
该网络包括一些标量输入(直接进入FNN),一些一维输入,一些二维输入,主演参数如下:
相应的结构输出:
CNN1:
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv1d (Conv1D) (None, 210, 5) 170
max_pooling1d (MaxPooling1D (None, 105, 5) 0
)
conv1d_1 (Conv1D) (None, 99, 5) 180
max_pooling1d_1 (MaxPooling (None, 49, 5) 0
1D)
conv1d_2 (Conv1D) (None, 45, 5) 130
max_pooling1d_2 (MaxPooling (None, 22, 5) 0
1D)
flatten (Flatten) (None, 110) 0
=================================================================
Total params: 480
Trainable params: 480
Non-trainable params: 0
_________________________________________________________________
CNN2:
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d (Conv2D) (None, 170, 36, 16) 2656
max_pooling2d (MaxPooling2D (None, 85, 18, 16) 0
)
conv2d_1 (Conv2D) (None, 79, 15, 8) 3592
max_pooling2d_1 (MaxPooling (None, 39, 7, 8) 0
2D)
conv2d_2 (Conv2D) (None, 35, 5, 5) 605
max_pooling2d_2 (MaxPooling (None, 11, 2, 5) 0
2D)
flatten_1 (Flatten) (None, 110) 0
=================================================================
Total params: 6,853
Trainable params: 6,853
Non-trainable params: 0
_________________________________________________________________
FNN:
Model: "sequential_2"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 256) 56832
dense_1 (Dense) (None, 256) 65792
dense_2 (Dense) (None, 20) 5140
=================================================================
Total params: 127,764
Trainable params: 127,764
Non-trainable params: 0
_________________________________________________________________
MIXNN:
Model: "model"
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_2 (InputLayer) [(None, 220, 3)] 0 []
input_3 (InputLayer) [(None, 180, 40, 3) 0 []
]
input_1 (InputLayer) [(None, 1)] 0 []
sequential (Sequential) (None, 110) 480 ['input_2[0][0]']
sequential_1 (Sequential) (None, 110) 6853 ['input_3[0][0]']
concatenate (Concatenate) (None, 221) 0 ['input_1[0][0]',
'sequential[0][0]',
'sequential_1[0][0]']
sequential_2 (Sequential) (None, 20) 127764 ['concatenate[0][0]']
==================================================================================================
Total params: 135,097
Trainable params: 135,097
Non-trainable params: 0
2.1 制造例子
例子是一个识别图片的工程,运行 mixnn_example,进行图片生成。