EEGNet 代码推理及实战
EEGNet: A Compact Convolutional Neural Network
for EEG-based Brain-Computer Interfaces
主要是Conv、Pooling、BatchNorm、Activation(ELU、Linear)、Dense、Softmax模块的组合;
下面我们将分三个Block介绍以下网络结构
- Conv2D
- DepthwiseConv2D
- SeparableConv2D
输入
输入EEGNet需要设置
- 分类种类nb_classes
- 通道数量Chans
- 采样频率Samples
- 卷积核长度kernLength
- DepthwiseConv2D的filter个数F1
- 每个输入通道可以扩展成多少个输出通道 D
- SeparableConv2D的filter个数F2
- 预定义的约束项norm_rate
- dropoutRate 和 dropoutType(Dropout是随机将部分的元素置零,而SpatialDropout会随机将不部分区域置零,SpatialDropout操作需要制定置零的维度;YOLOV4中用到了DropBlock感觉有些类似;)
还有一些作者设置好的,不需要修改的内容:
- depthwise_constraint限制卷积核的权重,避免过大的权重,这里是设置为max_norm(1.)
- use_bias=False 不采用网络的偏置项,可以减少网络参数,起到正则化的作用
def EEGNet(nb_classes, Chans = 64, Samples