为什么训练时我的Keras模型的精度始终为0? [英] Why is the accuracy for my Keras model always 0 when training?

查看:265
本文介绍了为什么训练时我的Keras模型的精度始终为0?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对keras并不陌生,我已经建立了一个简单的网络来尝试:

I'm pretty new to keras I have built a simple network to try:

import numpy as np;

from keras.models import Sequential;
from keras.layers import Dense,Activation;

data= np.genfromtxt("./kerastests/mydata.csv", delimiter=';')
x_target=data[:,29]
x_training=np.delete(data,6,axis=1)
x_training=np.delete(x_training,28,axis=1)

model=Sequential()
model.add(Dense(20,activation='relu', input_dim=x_training.shape[1]))
model.add(Dense(10,activation='relu'))
model.add(Dense(1));

model.compile(optimizer='adam',loss='mean_squared_error',metrics=['accuracy'])
model.fit(x_training, x_target)

如您所见,我从源数据中删除了2列.一个是带有字符串格式日期的列(在数据集中,除此之外,我还有一天的列,另外一个是月份的列,还有今年的列,所以我不需要该列),并且另一列是我用作模型目标的列.

From my source data, I have removed 2 columns, as you can see. One is a column that came with dates in a string format (in the dataset, besides it, I have a column for the day, another for the month, and another for the year, so I don't need that column) and the other column is the column I use as target for the model).

当我训练这个模型时,我得到以下输出:

When I train this model I get this output:

32/816 [>.............................] - ETA: 23s - loss: 13541942.0000 - acc: 0.0000e+00
800/816 [============================>.] - ETA: 0s - loss: 11575466.0400 - acc: 0.0000e+00 
816/816 [==============================] - 1s - loss: 11536905.2353 - acc: 0.0000e+00     
Epoch 2/10
 32/816 [>.............................] - ETA: 0s - loss: 6794785.0000 - acc: 0.0000e+00
816/816 [==============================] - 0s - loss: 5381360.4314 - acc: 0.0000e+00     
Epoch 3/10
 32/816 [>.............................] - ETA: 0s - loss: 6235184.0000 - acc: 0.0000e+00
800/816 [============================>.] - ETA: 0s - loss: 5199512.8700 - acc: 0.0000e+00
816/816 [==============================] - 0s - loss: 5192977.4216 - acc: 0.0000e+00     
Epoch 4/10
 32/816 [>.............................] - ETA: 0s - loss: 4680165.5000 - acc: 0.0000e+00
736/816 [==========================>...] - ETA: 0s - loss: 5050110.3043 - acc: 0.0000e+00
816/816 [==============================] - 0s - loss: 5168771.5490 - acc: 0.0000e+00     
Epoch 5/10
 32/816 [>.............................] - ETA: 0s - loss: 5932391.0000 - acc: 0.0000e+00
768/816 [===========================>..] - ETA: 0s - loss: 5198882.9167 - acc: 0.0000e+00
816/816 [==============================] - 0s - loss: 5159585.9020 - acc: 0.0000e+00     
Epoch 6/10
 32/816 [>.............................] - ETA: 0s - loss: 4488318.0000 - acc: 0.0000e+00
768/816 [===========================>..] - ETA: 0s - loss: 5144843.8333 - acc: 0.0000e+00
816/816 [==============================] - 0s - loss: 5151492.1765 - acc: 0.0000e+00     
Epoch 7/10
 32/816 [>.............................] - ETA: 0s - loss: 6920405.0000 - acc: 0.0000e+00
800/816 [============================>.] - ETA: 0s - loss: 5139358.5000 - acc: 0.0000e+00
816/816 [==============================] - 0s - loss: 5169839.2941 - acc: 0.0000e+00     
Epoch 8/10
 32/816 [>.............................] - ETA: 0s - loss: 3973038.7500 - acc: 0.0000e+00
672/816 [=======================>......] - ETA: 0s - loss: 5183285.3690 - acc: 0.0000e+00
816/816 [==============================] - 0s - loss: 5141417.0000 - acc: 0.0000e+00     
Epoch 9/10
 32/816 [>.............................] - ETA: 0s - loss: 4969548.5000 - acc: 0.0000e+00
768/816 [===========================>..] - ETA: 0s - loss: 5126550.1667 - acc: 0.0000e+00
816/816 [==============================] - 0s - loss: 5136524.5098 - acc: 0.0000e+00     
Epoch 10/10
 32/816 [>.............................] - ETA: 0s - loss: 6334703.5000 - acc: 0.0000e+00
768/816 [===========================>..] - ETA: 0s - loss: 5197778.8229 - acc: 0.0000e+00
816/816 [==============================] - 0s - loss: 5141391.2059 - acc: 0.0000e+00    

为什么会这样?我的数据是一个时间序列.我知道对于时间序列,人们通常不使用Dense神经元,但这只是一个测试.真正使我着迷的是精度始终为0.在其他测试中,我什至失败了:达到"NAN"值.

Why is this happening? My data is a time series. I know that for time series people do not usually use Dense neurons, but it is just a test. What really tricks me is that accuracy is always 0. And, with other tests, I did even lose: gets to a "NAN" value.

有人可以在这里帮忙吗?

Could anybody help here?

推荐答案

您的模型似乎与回归模型相对应,原因如下:

Your model seems to correspond to a regression model for the following reasons:

  • 您正在使用linear(默认值)作为激活功能在输出层中(以及relu在上一层中).

  • You are using linear (the default one) as an activation function in the output layer (and relu in the layer before).

您的损失为loss='mean_squared_error'.

但是,您使用的度量标准-metrics=['accuracy']对应于分类问题.如果要进行回归,请删除metrics=['accuracy'].也就是说,使用

However, the metric that you use- metrics=['accuracy'] corresponds to a classification problem. If you want to do regression, remove metrics=['accuracy']. That is, use

model.compile(optimizer='adam',loss='mean_squared_error')

以下是用于回归和分类的keras度量标准的列表(摘自此博客文章):

Here is a list of keras metrics for regression and classification (taken from this blog post):

Keras回归指标

•均方误差:mean_squared_error,MSE或mse

•Mean Squared Error: mean_squared_error, MSE or mse

•平均绝对错误:mean_absolute_error,MAE,湄

•Mean Absolute Error: mean_absolute_error, MAE, mae

•平均绝对百分比错误:mean_absolute_percentage_error,MAPE, 映射

•Mean Absolute Percentage Error: mean_absolute_percentage_error, MAPE, mape

•余弦接近度:cosine_proximity,余弦

•Cosine Proximity: cosine_proximity, cosine

Keras分类指标

•二进制精度:binary_accuracy,acc

•Binary Accuracy: binary_accuracy, acc

•分类准确度:categorical_accuracy,acc

•Categorical Accuracy: categorical_accuracy, acc

•稀疏分类准确度:sparse_categorical_accuracy

•Sparse Categorical Accuracy: sparse_categorical_accuracy

•Top k分类准确度:top_k_categorical_accuracy(要求您 指定一个k参数)

•Top k Categorical Accuracy: top_k_categorical_accuracy (requires you specify a k parameter)

•稀疏的前k个分类准确度:sparse_top_k_categorical_accuracy (要求您指定一个k参数)

•Sparse Top k Categorical Accuracy: sparse_top_k_categorical_accuracy (requires you specify a k parameter)

这篇关于为什么训练时我的Keras模型的精度始终为0?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆