Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我会得到一个不断的损失和准确性?_Python_Keras - Fatal编程技术网

Python 为什么我会得到一个不断的损失和准确性?

Python 为什么我会得到一个不断的损失和准确性?,python,keras,Python,Keras,这是我的代码:- # Importing the essential libraries import numpy as np import pandas as pd import matplotlib.pyplot as plt # Getting the dataset data = pd.read_csv("sales_train.csv") X = data.iloc[:, 1:-1].values y = data.iloc[:, -1].values # y

这是我的代码:-

# Importing the essential libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# Getting the dataset
data = pd.read_csv("sales_train.csv")
X = data.iloc[:, 1:-1].values 
y = data.iloc[:, -1].values
# y = np.array(y).reshape(-1, 1)

# Getting the values for november 2013 and 2014 to predict 2015
list_of_november_values = []
list_of_november_values_y = []
for i in range(0, len(y)):
    if X[i, 0] == 10 or X[i, 0] == 22:
        list_of_november_values.append(X[i, 1:])
        list_of_november_values_y.append(y[i])

# Converting list to array
arr_of_november_values = np.array(list_of_november_values)
y_train = np.array(list_of_november_values_y).reshape(-1, 1)

# Scaling the independent values 
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(arr_of_november_values)

# Creating the neural network
from keras.models import Sequential
from keras.layers import Dense

nn = Sequential()
nn.add(Dense(units=120, activation='relu'))
nn.add(Dense(units=60, activation='relu'))
nn.add(Dense(units=30, activation='relu'))
nn.add(Dense(units=15, activation='relu'))
nn.add(Dense(units=1, activation='softmax'))
nn.compile(optimizer='adam', loss='mse')
nn.fit(X_train, y_train, batch_size=100, epochs=25)

# Saving the weights
nn.save_weights('weights.h5')
print("Weights Saved")
对于我的损失,我在每个时代都得到了相同的价值。如果有一个我丢失的概念导致我的损失是恒定的,这有可能吗


这是代码的主要原因。

主要原因是您对最终层激活的奇怪选择,以及使用的损失函数。重新考虑这一点:您正在一个完全连接的层上使用softmax激活。Softmax激活采用矢量并对其进行缩放,使值之和等于1,并根据以下函数保持比例:

这个想法是,你的人际网络将只输出1,因此没有梯度,也没有学习

要解决这个问题,首先根据数据集的结构将最终层激活更改为ReLU或Linear(我自己不愿意使用提供的数据,但我相信您了解数据集的结构)

我预计在你的网络结构方面可能会有更多的问题,但我会让你自己决定。现在,最大的问题是最后一层的激活。

更改这一行:

nn.add(Dense(units=1, activation='softmax'))
nn.add(Dense(units=1))
关于这一行:

nn.add(Dense(units=1, activation='softmax'))
nn.add(Dense(units=1))
对于回归问题,不需要激活函数