iT邦幫忙

2022 iThome 鐵人賽

DAY 7
0

Day1至day5已經把第一堂課完成,接下來要進入第二堂課程-Convolutional Neural Networks in TensorFlow

今天就來個經典題型:Kaggle的貓狗大戰,這是個有獎金的挑戰,它有提供訓練的狗和貓圖庫各1000張,測試的各500張,我們一樣各撈訓練的8張出來看看:
https://ithelp.ithome.com.tw/upload/images/20220911/20141158smkwIKKkZs.png

可以看到這就是寫實地有各種角度(有的甚至不完整)、場景和配件(包含人的手、項鍊、很多隻等)的圖。範例程式如下,跟上次用來看是人是馬的只差在前處理的convolution和maxpooling降至3組,其他都是一樣的:

import tensorflow as tf

model = tf.keras.models.Sequential([
    # Note the input shape is the desired size of the image 150x150 with 3 bytes color
    tf.keras.layers.Conv2D(16, (3,3), activation='relu', input_shape=(150, 150, 3)),
    tf.keras.layers.MaxPooling2D(2,2),
    tf.keras.layers.Conv2D(32, (3,3), activation='relu'),
    tf.keras.layers.MaxPooling2D(2,2), 
    tf.keras.layers.Conv2D(64, (3,3), activation='relu'), 
    tf.keras.layers.MaxPooling2D(2,2),
    # Flatten the results to feed into a DNN
    tf.keras.layers.Flatten(), 
    # 512 neuron hidden layer
    tf.keras.layers.Dense(512, activation='relu'), 
    # Only 1 output neuron. It will contain a value from 0-1 where 0 for 1 class ('cats') and 1 for the other ('dogs')
    tf.keras.layers.Dense(1, activation='sigmoid')  
])

from tensorflow.keras.optimizers import RMSprop

model.compile(optimizer=RMSprop(learning_rate=0.001),
              loss='binary_crossentropy',
              metrics = ['accuracy'])

from tensorflow.keras.preprocessing.image import ImageDataGenerator

另外由於有提供測試圖庫,所以我們可以在訓練時也給入(validation_data=validation_generator),這樣就可以看到每次epoch除了training的loss和accuracy,同時也有測試的loss和accuracy:

history = model.fit(
      train_generator,
      steps_per_epoch=8,  
      epochs=15,
      verbose=1,
      validation_data = validation_generator,
      validation_steps=8)

雖然訓練圖庫的數量增加了,但同樣存在著會有誤判的情況,可是有什麼方法可以調整和改善呢?而從loss和accuracy又能得到什麼資訊?就讓我們繼續看下去...


上一篇
Day5 新手村的練習課程-有時候有時候
下一篇
Day07 新手村的練習課程-先轉一轉,翻一翻,移一移,再
系列文
來創造一個AI角色吧-新手的探尋之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言