【发布时间】:2019-08-12 19:28:22
【问题描述】:
我正在尝试使用 1D 卷积神经网络并扫描不同的参数,从大腿和小腿(6 个特征)上的 x、y 和 z 加速度计和陀螺仪数据将数据分类为步行或跑步(以及最终的其他活动) .
当我根据我的数据训练和评估模型时,我有时会获得 100% 的准确率,有时会获得 60% 的准确率(有些参数组合会导致 ~99%)。从训练 v 验证损失曲线来看,这些模型看起来并没有过度拟合,但我觉得奇怪的是,我有时会得到 100.000%,而其他的则如此之低。
为了查看是否总是如此,我对每个模型进行了 15 次训练和评估,并取平均值和标准差。大多数参数组合都表现出这种行为,有些则没有。
例如(最后的值是对看不见的数据的准确度):
>Standardize=False Filter=16 Kernel=3 Batch=32: #1: 59.701
>Standardize=False Filter=16 Kernel=3 Batch=32: #2: 100.000
>Standardize=False Filter=16 Kernel=3 Batch=32: #3: 100.000
>Standardize=False Filter=16 Kernel=3 Batch=32: #4: 99.975
>Standardize=False Filter=16 Kernel=3 Batch=32: #5: 100.000
>Standardize=False Filter=16 Kernel=3 Batch=32: #6: 40.299
>Standardize=False Filter=16 Kernel=3 Batch=32: #7: 100.000
>Standardize=False Filter=16 Kernel=3 Batch=32: #8: 59.701
>Standardize=False Filter=16 Kernel=3 Batch=32: #9: 59.701
>Standardize=False Filter=16 Kernel=3 Batch=32: #10: 100.000
>Standardize=False Filter=16 Kernel=3 Batch=32: #11: 59.701
>Standardize=False Filter=16 Kernel=3 Batch=32: #12: 100.000
>Standardize=False Filter=16 Kernel=3 Batch=32: #13: 59.701
>Standardize=False Filter=16 Kernel=3 Batch=32: #14: 59.701
>Standardize=False Filter=16 Kernel=3 Batch=32: #15: 99.975
这是我正在使用的模型:
model = models.Sequential()
model.add(Conv1D(filters=filt, kernel_size=kernel, activation='relu',
input_shape=(n_timesteps, n_features)))
model.add(Conv1D(filters=filt, kernel_size=kernel, activation='relu'))
model.add(layers.Dropout(0.5))
model.add(MaxPooling1D(pool_size=2))
model.add(layers.Flatten())
model.add(layers.Dense(100, activation='relu'))
model.add(layers.Dense(n_activities, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# fit network
history = model.fit(X_train, y_train, validation_data=(X_val, y_val),
epochs=epochs, batch_size=batch_size, verbose=verbose)
# evaluate model
_, accuracy = model.evaluate(X_val, y_val, batch_size=batch_size, verbose=0)
我扫描了过滤器大小 (16, 32)、内核大小 (3, 5) 和批量大小 (16,32),还检查了标准化和非标准化数据。
我还在大约 10,000 多个数据窗口上进行训练
这是否意味着我的模型错误/无法正常工作?如果是这样,有什么解决办法吗?
【问题讨论】:
标签: python keras classification conv-neural-network