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)はカテゴリを予測し、印刷された値はカテゴリ番号
  • である.
    同時にシーケンスモデルでのみ予測でき、関数モデルでは使用できません.
      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.]
  • model.predict(test)は数値を予測し、出力はまだ5つの符号化値であるが実数であり、予測後はargmax(predict_test,axis=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である.