【问题标题】:Keras accuracy returning 0Keras 精度返回 0
【发布时间】:2021-02-28 08:19:45
【问题描述】:

所以基本上,我正在研究这个子弹优化程序。我想研究不同的弹道参数,如重量、长度和质量如何影响弹道系数。但是,我的训练准确率是0,虽然有loss和val_loss。我已经阅读过关于此的类似 Stackoverflow 帖子,但到目前为止没有一个对我有帮助。也许我只是没有做对;我引用https://stackoverflow.com/a/63513872/12349188

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') is wrong。或者你想预测什么?
  • 所以给定 13 个参数(例如尺寸、质量、密度),我试图预测弹道系数(BC)
  • 所以它们的值是0.4、0.8?如果是这样,那么这不是一个分类。
  • 那么这会被认为是什么?不像回归,而是多维尺度?

标签: python pandas numpy keras sequential


【解决方案1】:

你的代码有几个问题。

首先这一行:

Dense(1,activation='softmax')

此行每次都会导致输出1。因此,即使您进行分类,如果您有 2 个类别,您的准确率也会达到 50%。 Softmax 输出的总和将等于一。所以对一个神经元使用它是没有意义的。

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

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

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

Dense(1)

【讨论】:

  • 我使用过预训练模型,现在是我学习如何编写自己的序列模型的时候了!谢谢,我试试看;要知道的东西太多了!
  • 不客气,如果解决了您的问题,请考虑采纳答案。
  • 我知道这听起来很愚蠢,但我如何从回归中辨别分类?我只是猜想这是回归,因为您要获取一堆参数并将它们拟合为单个值,但是除了这两个之外,您还知道哪些其他任务?
  • 分类是预测离散类标签输出的问题,而回归是预测连续量的问题。 You can find more from here
  • 你所说的发生时是什么意思?如果我理解正确,您可以使用 Tensorboard。
猜你喜欢
  • 1970-01-01
  • 2021-06-16
  • 1970-01-01
  • 1970-01-01
  • 2016-04-17
  • 1970-01-01
  • 2018-02-14
  • 2016-09-09
  • 1970-01-01
相关资源
最近更新 更多