AI-Deep Learing 3日目
20428 ワード
学習内容
猫と犬の画像を分類します
# colab에서 드라이브에 있는 파일을 사용하기 위해 마운트
from google.colab import drive
drive.mount('/content/drive')
import keras
import os, shutil
# colab에서 드라이브에 있는 파일을 사용하기 위해 마운트
from google.colab import drive
drive.mount('/content/drive')
import keras
import os, shutil
分類するフォルダを作成
ファイルのコピー
Copy files....
---traing file(s) (cat)....
---validation file(s) (cat)....
---test file(s) (cat)....
---traing file(s) (dog)....
---validation file(s) (dog)....
---test file(s) (dog)....
チェックprint('훈련용 고양이 이미지 전체 개수:', len(os.listdir(train_cats_dir))) # 파일 전체 목록의 길이 확인
print('검증용 고양이 이미지 전체 개수:', len(os.listdir(validation_cats_dir)))
print('테스트용 고양이 이미지 전체 개수:', len(os.listdir(test_cats_dir)))
print('훈련용 강아지 이미지 전체 개수:', len(os.listdir(train_dogs_dir)))
print('검증용 강아지 이미지 전체 개수:', len(os.listdir(validation_dogs_dir)))
print('테스트용 강아지 이미지 전체 개수:', len(os.listdir(test_dogs_dir)))
훈련용 고양이 이미지 전체 개수: 1000
검증용 고양이 이미지 전체 개수: 500
테스트용 고양이 이미지 전체 개수: 500
훈련용 강아지 이미지 전체 개수: 1000
검증용 강아지 이미지 전체 개수: 500
테스트용 강아지 이미지 전체 개수: 500
from keras import layers
from keras import models
# 레이어 11개 생성
model = models.Sequential()
model.add(layers.Conv2D(32, (3,3), activation='relu'))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(64, (3,3), activation='relu'))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(128, (3,3), activation='relu'))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(128, (3,3), activation='relu'))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Flatten()) #이미지를 일자로 펴기
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))
#이진분류할 때는 sigmoid 사용
#모델 컴파일
from tensorflow.keras import optimizers
model.compile(loss='binary_crossentropy', #둘 중 하나면 binary_crossentropy, 여러 개면 categorical_crossentropy
optimizer=optimizers.RMSprop(lr=1e-4),
metrics=['acc'])
画像の大きさによって特性が異なる
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(rescale=1./255)
validation_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
train_dir,
target_size=(150,150),
batch_size=20,
class_mode='binary'
)
validation_generator = validation_datagen.flow_from_directory(
validation_dir,
target_size=(150,150),
batch_size=20,
class_mode='binary'
)
model.fit_generator(
train_generator,
epochs=30, #반복 횟수
steps_per_epoch=100,
validation_data=validation_generator,
validation_steps=50
)
Epoch 1/30
100/100 [==============================] - 478s 5s/step - loss: 0.6948 - acc: 0.5250 - val_loss: 0.6828 - val_acc: 0.5040
Epoch 2/30
100/100 [==============================] - 12s 124ms/step - loss: 0.6624 - acc: 0.5920 - val_loss: 0.6568 - val_acc: 0.5980
Epoch 3/30
100/100 [==============================] - 12s 123ms/step - loss: 0.6202 - acc: 0.6630 - val_loss: 0.6147 - val_acc: 0.6700
...중략...
Epoch 29/30
100/100 [==============================] - 12s 123ms/step - loss: 0.0362 - acc: 0.9900 - val_loss: 1.1306 - val_acc: 0.7200
Epoch 30/30
100/100 [==============================] - 12s 123ms/step - loss: 0.0328 - acc: 0.9900 - val_loss: 1.0944 - val_acc: 0.7310
model.save('cats_and_dogs_small_l.h5') #모델의 확장자 h5
history = model.history
import matplotlib.pyplot as plt
acc = history.history['acc']
val_acc = history.history['val_acc']
loss = history.history['loss']
val_loss = history.history['val_loss']
epochs = range(len(acc))
plt.plot(epochs, acc, 'bo', label='Training acc')
plt.plot(epochs, val_acc, 'b', label='Validation acc')
plt.title('Training and validation accuracy')
plt.legend()
plt.figure()
plt.plot(epochs, loss, 'bo', label='Training loss')
plt.plot(epochs, val_loss, 'b', label='Validation loss')
plt.title('Training and validation loss')
plt.legend()
学習後期
エラーが発生した場合、問題が発生しなければ解決方法が見つからないが、エラーが発生していないので心配だ.
今日作った内容を一人で作る自信はありませんが、理解に満足してください.
復習に時間がかかったので、方法を変えて、悪くないと思います.
ビデオは全体的に速く见えて、知っている内容を整理して、今日はまずコードの内容を说明して、理解していない部分を単独で検査して、后でもう一度探して、知らない検査はもっと良くて、复习の时间も减りました.おかげさまで、聞きたい授業を聞く余裕ができました.
Reference
この問題について(AI-Deep Learing 3日目), 我々は、より多くの情報をここで見つけました
https://velog.io/@hanss1122/AI-Deep-Learing-3일차
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(AI-Deep Learing 3日目), 我々は、より多くの情報をここで見つけました https://velog.io/@hanss1122/AI-Deep-Learing-3일차テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol