假设这个示例实现了简单的二进制分类。
X = array([[1,2,3],[2,3,4],[3,4,5]])
y = array([0],[1],[0])
Dates[IncludeDate] is 1
这实现了多类分类。
X = array([[1,2,3],[2,3,4],[3,4,5]])
y = array([4],[5],[6])
...
model.compile(loss='binary_crossentropy', optimizer='adam')
model.fit(X, y, epochs=50, verbose=0)
# new instance where we do not know the answer
Xnew = array([[4, 5, 6]])
# make a prediction
ynew = model.predict(Xnew)
#show the inputs and predicted outputs
print("X=%s, Predicted=%s" % (Xnew[0], ynew[0]))
...
results
X=[4, 5, 6], Predicted=[0 or 1]
如何用单个输出实现多类分类以获得类似的结果? (类似于预测时间序列)
X = array([[1,2,3],[2,3,4],[3,4,5]])
y = array([4],[5],[6])
...
model.compile(loss='categorical_crossentropy', optimizer='adam')
# fit model
model.fit(X, y, epochs=50, verbose=2)
model.reset_states()
# evaluate model on new data
yhat = model.predict((X))
...
results decoded
X=[4, 5, 6], Predicted=[4, 5, 6]
解码结果 X = [4,5,6],Predicted = [7]
答案 0 :(得分:0)
您要寻找的是loss='sparse_categorical_crossentropy'
函数,它将假定整数目标是类标签。因此,如果您的模型有7个输出,并且给定目标2,则sparse_categorical_crossentropy
将2转换为目标[0,0,1,0,0,0,0]
并照常应用categorical_crossentropy
。
在这种情况下,您的输出层激活函数应为softmax
,并且输出数等于类数。最有可能像Dense(num_classes, activation='softmax')
如果您的整数类仅为[4,5,6]
,则需要将它们移至[0,1,2]
以满足条件max(Y_targets) < num_classes
。