【问题标题】:accuracy for 1D CNN model is very low一维 CNN 模型的准确率非常低
【发布时间】:2021-06-25 22:17:15
【问题描述】:

我尝试建立一维 CNN 模型来进行 DNA 突变分类我建立了模型并且它可以正常工作,但是我得到的测试数据精度很低 我有如下图所示的数据集

这是我的模型

vocab_size = 100
embedding_dim = 150
max_len = 90
X_train = pad_sequences(X_train,padding ='post', maxlen = max_len)
X_test = pad_sequences(X_test,padding ='post', maxlen = max_len)
model = Sequential()
model.add(layers.Embedding(vocab_size,embedding_dim,input_length = max_len))
model.add(layers.Conv1D(128, 7, activation = 'relu'))
model.add(layers.GlobalMaxPooling1D())
model.add(layers.Dense(10, activation = 'relu'))
model.add(layers.Dense(1, activation = 'sigmoid'))
model.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics= ['accuracy'])
model.summary()
history = model.fit(X_train,y_train,epochs = 10, verbose = False,validation_data = (X_test,y_test),batch_size = 10)
loss,accuracy = model.evaluate(X_train,y_train, verbose = False)
accuracy = accuracy*100
print("training accuracy = {:.2f}".format(accuracy))
loss,accuracy = model.evaluate(X_test,y_test, verbose = False)
accuracy = accuracy*100
print("test accuracy = {:.2f}".format(accuracy))

我的输入是 ['sequence','normal','mutated','position'] 目标列是 ['class'] 列 那么我的测试准确性有什么问题。

编辑: 我尝试在 train_test_split 函数中更改测试数据的百分比并增加测试数据的百分比以避免过度拟合,但测试准确度仍然很低

【问题讨论】:

  • 当你在上层使用relu 时,不要在最后一个Dense 层使用sigmoid。这可能导致神经元的完全饱和放电(使用sigmoid)。相反,尝试在最后一个Dense 层中设置units=2,并将损失函数更改为sparse_categorical_crossentropy
  • 但我需要形状为 (,1) 的输出,所以我无法设置 units=2,我使用了 'binary_crossentropy' 因为我需要输出仅为 0 或 1
  • 我改了 'sigmoid' 函数精度降低了
  • @mohamedhossam 验证/训练准确率高而测试准确率低吗?
  • @Wanderer 是的,存在过度拟合,但无法通过增加测试数据来解决

标签: python tensorflow machine-learning keras conv-neural-network


【解决方案1】:

您可以采用多种方法来泛化您的模型并提高测试准确性:

1- 检查您的数据集是否不平衡。不平衡的数据集意味着每个类中的数据大小有很大的不同。

2- 您可以使用数据/图像增强技术来增加数据集的大小或平衡类的大小。

3- 进行超参数优化,更改优化器类型、batch_size、学习率和其他超参数以找到最佳的。

4- 在某些情况下,使用其他函数来获取损失和准确性可能会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    • 2020-04-07
    • 1970-01-01
    相关资源
    最近更新 更多