model.predict_classes(test)とmodel.predict(test)区別
kerasで深さネットワーク予測を行う場合、この2つの予測関数modelがある.predict_classes(test)とmodel.predict(test)は、本例では多分類であり、ラベルはone-hot符号化されている.例えば[1,2,3,4,5]はラベルカテゴリであり、符号化後は[1 0 0 0 0 0 0 0 0 0 0],[0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]である.[0 0 0 0 1] model.predict_classes(test)はカテゴリを予測し、印刷された値はカテゴリ番号 である.
同時にシーケンスモデルでのみ予測でき、関数モデルでは使用できません. model.predict(test)は数値を予測し、出力はまだ5つの符号化値であるが実数であり、予測後はargmax(predict_test,axis=1) を通過する.
同時にシーケンスモデルでのみ予測でき、関数モデルでは使用できません.
predict_test = model.predict_classes(X_test).astype('int')
inverted = encoder.inverse_transform([predict_test])
print(predict_test)
print(inverted[0])
[1 0 0 ... 1 0 0]
[2. 1. 1. ... 2. 1. 1.]
predict_test = model.predict(X_test)
predict = argmax(predict_test,axis=1) #axis = 1 ,0
inverted = encoder.inverse_transform([predict])
print(predict_test[0:3])
print(argmax(predict_test,axis=1))
print(inverted)
[[9.9992561e-01 6.9890179e-05 2.3676146e-06 1.9608513e-06 2.5582506e-07]
[9.9975246e-01 2.3708738e-04 4.9365349e-06 5.2166861e-06 3.3735736e-07]
[9.9942291e-01 5.5233808e-04 8.9857504e-06 1.5617061e-05 2.4388814e-07]]
[0 0 0 ... 0 0 0]
[[1. 1. 1. ... 1. 1. 1.]]
最初と後の各予測値符号化は第1列が最大であるため、インデックスは0であり、逆符号化後は1である.