Keras 精度返回 0

Keras accuracy returning 0

基本上,我正在研究这个项目符号优化程序。我想研究重量、长度和质量等不同的弹道参数如何影响弹道系数。但是,我的训练准确率是0,虽然有loss和val_loss。我已经阅读过与此相关的类似 Whosebug 帖子,但 none 到目前为止对我有所帮助。也许我只是没有做对;我正在引用

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.utils import shuffle

df = pd.read_csv('Bullet Optimization\ShootForum Bullet DB_2.csv')

from sklearn.model_selection import train_test_split
from sklearn import preprocessing
dataset = df.values
X = dataset[:,0:12]
X = np.asarray(X).astype(np.float32)

y = dataset[:,13]
y = np.asarray(y).astype(np.float32)

X_train, X_val_and_test, y_train, y_val_and_test = train_test_split(X, y, test_size=0.3, shuffle=True)
X_val, X_test, y_val, y_test = train_test_split(X_val_and_test, y_val_and_test, test_size=0.5)

from keras.models import Sequential
from keras.layers import Dense, BatchNormalization

model = Sequential(
    [
        #2430 is the shape of X_train
        #BatchNormalization(axis=-1, momentum = 0.1),
        Dense(32, activation='relu'),
        Dense(32, activation='relu'),
        Dense(1,activation='softmax'),
    ]
)

model.compile(optimizer='sgd', loss='binary_crossentropy', metrics=['accuracy'])

history = model.fit(X_train, y_train, batch_size=64, epochs=100, validation_data=(X_val, y_val))

我的代码是不是做错了什么?我知道一些 python 但我只是出于自己的目的在教程的基础上进行了构建。

你的代码有几个问题。

第一行:

Dense(1,activation='softmax')

这一行每次都会导致输出1。所以即使你在做分类,如果你有 2 类,你的准确率也会是 50%。 Softmax 输出的总和将等于一。所以将它与一个神经元一起使用是没有意义的。

您需要更改损失和指标,因为这是一个回归

loss='mse', metrics=['mse']

此外,您的输出神经元应该是线性的,这意味着不需要任何激活函数。它应该是这样的:

Dense(1)