我正在尝试使用 Tensorflow 进行信号分类。这些信号是正常信号或高风险信号。为此,我使用了卷积神经网络。信号长度为685,架构为:
- 具有 27 个通道和 1 x 16 窗口大小和步幅 1 的卷积层。
- 最大池化层,窗口大小为 1 x 2,步幅为 2。
- 具有 14 个通道和 1 x 32 窗口大小和步幅 1 的卷积层。
- 最大池化层,窗口大小为 1 x 2,步幅为 2。
- 具有 4 个通道和 1 x 32 窗口大小和步幅 1 的卷积层。
- 最大池化层,窗口大小为 1 x 2,步幅为 2。
- 具有 3 个通道和 1 x 10 窗口大小和步幅 1 的卷积层。
- 最大池化层,窗口大小为 1 x 2,步幅为 2。
- 具有 20 个神经元和 dropout 层的全连接层。
- 具有 10 个神经元和 dropout 层的全连接层。
- 最后是 Soft max 层。
在使用 AdamOptimizer 以 0.001 的学习率和 150000 个信号训练网络后,训练准确度接近 95%(使用 16 批量大小的批量训练),但使用 20000 个新信号的测试准确度几乎为 50%。由于只有 2 个类,因此这种准确性并不比随机猜测好。
model="conv1d-27-16-1,maxpool-2,conv1d-14-32-1,maxpool-2,conv1d-4-32-1,maxpool-2,conv1d-3-10-1,maxpool-2,full-20,full-10,softmax"
cnn=CNN_1D(model,input_size=685,n_classes=2,num_epochs=20,batch_size=16,dropout=0.75)
cnn.read_data('train_input','train_targets','test_input','test_targets')
cnn.build_model()
cnn.training(validation_set='all')
如何提高网络中的测试准确性?