小编Mus*_*led的帖子

如何在训练过程中纠正不稳定的损失和准确率?(二元分类)

我目前正在使用 tensorflow 中的新 keras API 进行一个小型二进制分类项目。问题是几年前在 Kaggle.com 上发布的希格斯玻色子挑战的简化版本。数据集形状为 2000x14,其中每行的前 13 个元素构成输入向量,第 14 个元素是对应的标签。这是所述数据集的示例:

86.043,52.881,61.231,95.475,0.273,77.169,-0.015,1.856,32.636,202.068, 2.432,-0.419,0.0,0
138.149,69.197,58.607,129.848,0.941,120.276,3.811,1.886,71.435,384.916,2.447,1.408,0.0,1
137.457,3.018,74.670,81.705,5.954,775.772,-8.854,2.625,1.942,157.231,1.193,0.873,0.824,1
Run Code Online (Sandbox Code Playgroud)

我对机器学习和 tensorflow 比较陌生,但我熟悉更高层次的概念,例如损失函数、优化器和激活函数。我曾尝试根据在线发现的二元分类问题示例构建各种模型,但我在训练模型时遇到了困难。在训练期间,损失在同一时期内有时会增加,导致学习不稳定。准确率达到了 70% 左右的稳定水平。我曾尝试更改学习率和其他超参数,但无济于事。相比之下,我已经硬编码了一个完全连接的前馈神经网络,在同一问题上的准确率达到了 80-85% 左右。

这是我目前的模型:

import tensorflow as tf
from tensorflow.python.keras.layers.core import Dense
import numpy as np
import pandas as pd

def normalize(array):
    return array/np.linalg.norm(array, ord=2, axis=1, keepdims=True)

x_train = pd.read_csv('data/labeled.csv', sep='\s+').iloc[:1800, :-1].values
y_train = pd.read_csv('data/labeled.csv', sep='\s+').iloc[:1800, -1:].values

x_test = pd.read_csv('data/labeled.csv', sep='\s+').iloc[1800:, :-1].values
y_test = pd.read_csv('data/labeled.csv', sep='\s+').iloc[1800:, -1:].values

x_train = normalize(x_train)
x_test = normalize(x_test)

model = tf.keras.Sequential()
model.add(Dense(9, input_dim=13, activation=tf.nn.sigmoid) …
Run Code Online (Sandbox Code Playgroud)

python classification machine-learning tensorflow

13
推荐指数
1
解决办法
9757
查看次数