tensorflowシンプルCNN使用

1962 ワード

tensorflowでkerasを用いてボリュームニューラルネットワークを構築する
1.モデルモデルモデルを初期化します.Sequentialクラスを作成し、レイヤを追加
2.コンパイルモデル呼び出しcompile()、最適化方法の指定、損失関数など
3.Callbackの定義(オプション)トレーニング終了条件の定義
4.ピクチャジェネレータはピクチャジェネレータを作成し、フォルダからピクチャを読み出し、ピクチャを処理する
5トレーニングコールモデルのfit_generatorトレーニングデータ
初期化
import tensorflow as tf 
model = tf.keras.models.Sequential([
  tf.keras.layers.Conv2D(16,(3,3),activation = tf.nn.relu,input_shape = (300,300,3)),
    tf.keras.layers.MaxPool2D(2,2),
    tf.keras.layers.Conv2D(32,(3,3),activation=tf.nn.relu),
    tf.keras.layers.MaxPool2D(2,2),
    tf.keras.layers.Conv2D(64,(3,3),activation=tf.nn.relu),
    tf.keras.layers.MaxPool2D(2,2),
    tf.keras.layers.Conv2D(64,(3,3),activation=tf.nn.relu),
    tf.keras.layers.MaxPool2D(2,2),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(512,activation=tf.nn.relu),
    tf.keras.layers.Dense(1,activation= tf.nn.sigmoid)
])

コンパイル
from tensorflow.keras.optimizers import RMSprop
model.compile(optimizer = RMSprop(lr=0.0003),loss = "binary_crossentropy",metrics = ["acc"])

ピクチャジェネレータ
from tensorflow.keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(rescale=1/255.0)
train_generator = train_datagen.flow_from_directory(
        "/tmp/h-or-s",
          target_size = (300,300),
          batch_size = 10,
          class_mode = "binary",
          )

コールバック
class myCallback(tf.keras.callbacks.Callback):
    def on_epoch_end(self, epochs,logs={}):
        if logs.get("acc") > 0.999:
            print("
Reached 99.9% accuracy so cancelling training!") self.model.stop_training = True callbacks = myCallback()

トレーニング
hist = model.fit_generator(
    train_generator,
    steps_per_epoch=8,
    epochs=10,
    verbose=1,
    callbacks=[callbacks])