Lind
@Lind (Lind Taylor)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

CNNで評価関数にprecisionを用いる方法。

解決したいこと

ここに解決したい内容を記載してください。
CNNで画像分類をするためのプログラムを組みました。
必要なライブラリは、ターミナルでダウンロードして、自分のパソコンで環境構築しました。

accuracyはできたのですが、
評価関数をaccuracyだけではなく、precisionなどでも試したいと思ったのですが、できませんでした。
初心者すぎて、どうすれば良いかわかりません。
解決方法とコードの書き方を教えていただきたいです。

発生している問題・エラー

ValueError: Unknown metric function: precision. Please ensure this object is passed to the `custom_objects` argument. See https://www.tensorflow.org/guide/keras/save_and_serialize#registering_the_custom_object for details.

該当するソースコード

ソースコードを入力
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras.layers import Conv2D, MaxPooling2D, Flatten
from keras.preprocessing.image import ImageDataGenerator


def main():
    model = Sequential()
    model.add(Conv2D(16, (3, 3), padding= "same" ,input_shape=(64, 64, 3)))
    model.add(Activation("relu"))
    model.add(MaxPooling2D(pool_size= (2, 2)))
    model.add(Conv2D(64, (3, 3)))
    model.add(Activation("relu"))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Flatten())
    model.add(Dense(256))
    model.add(Activation("relu"))
    model.add(Dense(2))
    model.add(Activation("softmax"))
    #model.summary()
    model.compile(
            optimizer="adam" ,
            loss="categorical_crossentropy",
            metrics=["precision"])
    train_datagen = ImageDataGenerator(rescale=1./255)
    test_datagen = ImageDataGenerator(rescale=1./255)
    train_generator = train_datagen.flow_from_directory(
    "/Users/arou/Desktop/grad/trainingdatasets_Kogane/train_kagane",
            target_size=(64, 64),
            batch_size=10)
    validation_generator = test_datagen.flow_from_directory(
    "/Users/arou/Desktop/grad/trainingdatasets_Kogane/validation_kogane",
            target_size=(64, 64),
            batch_size=10)
    model.fit_generator(
            train_generator,
            epochs=100,
            steps_per_epoch=10,
            validation_data=validation_generator,
            validation_steps=10)
    model.save("model.h5")


if __name__ == "__main__":
    main()

0

1Answer

from tensorflow.keras.metrics import Precision

    model.compile(
            optimizer="adam" ,
            loss="categorical_crossentropy",
            metrics=[Precision()])
0Like

Comments

  1. @Lind

    Questioner

    ご回答ありがとうございます。すみません返信に気づかず、遅くなってしまいました。
    コードの添付ありがとうございます。出来ました!
    すみません、もう一点お聞きしたいのですが、どの画像がどっちのクラスに分類されたのかを見ることはできるのでしょうか?

Your answer might help someone💌