我是使用人工神经网络的分类问题的新手
我有一个分类问题,输入数据是8列,十进制值是度量,输出数据是8列,整数值是对象
INPUTS
785.39 6.30 782.75 771.82 7.53 -94.86 378.66 771.82
.
.
.
OUTPUTS
8 9 5 7 3 1 6 2
.
.
.
训练数据的记录为800,测试数据的记录为200
这是代码
import numpy
from keras.models import Sequential
from keras.layers import Dense
from keras.utils import np_utils
seed = 7
numpy.random.seed(seed)
datasetTrain = numpy.loadtxt("train.csv", delimiter=",")
datasetTest = numpy.loadtxt("test.csv", delimiter=",")
X_train = datasetTrain[:,0:7]
y_train = datasetTrain[:,8:15]
X_test = datasetTest[:,0:7]
y_test = datasetTest[:,8:15]
y_train = np_utils.to_categorical(y_train)
y_test = np_utils.to_categorical(y_test)
def baseline_model():
# create model
model = Sequential()
model.add(Dense(7, input_dim=7, kernel_initializer='normal', activation='relu'))
model.add(Dense((5593, 785), kernel_initializer='normal', activation='softmax'))
# Compile model
model.compile(loss='categorical_crossentropy', optimizer='adam')
return model
model = baseline_model()
model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=400,
batch_size=200, verbose=25)
scores = model.evaluate(X_test, y_test, verbose=0)
print("Baseline Error: %.2f%%" % (100-scores[1]*100))
我收到此错误
Traceback (most recent call last):
File "proyecto.py", line 29, in <module>
model = baseline_model()
File "proyecto.py", line 24, in baseline_model
model.add(Dense((5593, 785), kernel_initializer='normal', activation='softmax'))
ValueError: setting an array element with a sequence.
这个数据的最佳模型是什么?
答案 0 :(得分:1)
这部分:
model.add(Dense((5593, 785), kernel_initializer='normal', activation='softmax'))
错误,Dense的第一个参数是输出神经元的数量,它应该是标量,而不是元组或向量。如果您想要2D形状的输出,那么您可以使用Reshape图层重塑输出并执行以下操作:
model.add(Dense(5593 * 785, kernel_initializer='normal', activation='softmax'))
model.add(Reshape((5593, 785)))
答案 1 :(得分:0)
在您的第一个图层model.add(Dense(7...
之后,该图层的输出具有维度7
(7个输出神经元)。下一层可以自动处理该7神经元层作为输入。但是你要告诉Keras,当它寻找另一个单一数字时,下一层应该有(5593, 785)
的输出神经元。
通过更改model.add(Dense((5593, 785)...
到
model.add(Dense(1...
或
model.add(Dense(n...
(其中n
是您尝试分类的分类变量的可能级别数?
答案 2 :(得分:0)
model = Sequential()
num_pixels = IMG_HEIGHT * img_width
model.add(Dense(num_pixels, input_dim=num_pixels, kernel_initializer='normal',
activation='relu'))
model.add(Dense(num_classes, kernel_initializer='normal',
activation='softmax'))