【发布时间】:2021-12-15 22:08:03
【问题描述】:
当我将 y 设置为二进制值 [0,1] 时,我的准确度很高,但是当我将它设置为非二进制 [1,2,3] 值时,我的准确度为 0。 Keras 是否仅适用于二进制文件?
from keras.models import Sequential
from keras.layers import Dense
import numpy
from numpy import loadtxt
# fix random seed for reproducibility
numpy.random.seed(7)
numpy.random.seed(7)
dataset = loadtxt('Trial.csv', delimiter=',')
# split into input (X) and output (Y) variables
# split into input (X) and output (y) variables
X = dataset[:,0:2]
Data_1 = X.astype('float32')
y = dataset[:,3]
Data_2 = y.astype("float32")
# define the keras model
model = Sequential()
model.add(Dense(64, input_dim=2, activation='sigmoid'))
model.add(Dense(64, activation='sigmoid'))
model.add(Dense(1, activation='sigmoid'))
# compile the keras model
model.compile(loss='mean_squared_logarithmic_error', optimizer='adam', metrics=['accuracy'])
# fit the keras model on the dataset
model.fit(Data_1, Data_2, epochs=15, batch_size=100)
# evaluate the keras model
_, accuracy = model.evaluate(Data_1, Data_2)
print('Accuracy: %.2f' % (accuracy*100))
【问题讨论】:
-
activation='sigmoid'在[0, 1]范围内输出实数值,所以它永远不会输出 2 或 3 -
输出函数需要是softmax并且你需要和label一样多的神经元。我建议您在进行编码之前更好地了解神经网络的工作原理。主要是架构和激活函数。
标签: python tensorflow keras