iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 18
0
AI & Data

AI+Line系列 第 18

Day18 CNN卷積神經網路程式(6):預測新資料

  • 分享至 

  • xImage
  •  

假設情況是要預測一張新的圖片,數字是多少,我們從圖片所在的路徑去取出該圖片

def predict_image_with_path(file_path):
    im = Image.open(file_path)

通常照相的圖片是RGB彩圖,我們要轉換成灰階圖,因為訓練模型時用得是灰階圖

im = im.convert('L')

將圖片大小縮成28x28,會有圖片變扁或變長的問題,但我們為了簡化理解,先忽視這類的問題
ANTIALIAS是反鋸齒(平滑化)

im = im.resize((28, 28), Image.ANTIALIAS)  # resize the image

機器學習使用Numpy的陣列

im = np.array(im)

跟之前圖片預處理一樣,將值變成0~1的分佈

im2 = im / np.max(im).astype(float) # normalise input

這些是繪圖,方便我們看看得到了什麼樣的圖

plt.imshow(im2, cmap='gray')
plt.title('My Image')
plt.axis('off')
plt.show()

轉換成當時架構網路時一樣的input shape
model.predict(test_image)會得出類似這樣的結果: [0.05, 0.4, 0, 0, 0, 0, 0, 0.55, 0, 0, 0]
model.predict(test_image).argmax(axis=1)會把返回最大的值在第幾個:7,也就是預測數字7

test_image = np.reshape(im2, [1, 1, 28, 28])  # reshape it to our input placeholder shape
predict = model.predict(test_image).argmax(axis=1)
return test_image, predict

總結:將新資料改成符合當初訓練模型時用的資料格式
例如灰階圖(channel=1)、尺寸(28x28)、正規化(值從0~255變成0~1)、輸入input placeholder shape


上一篇
Day17 CNN卷積神經網路程式(5):儲存模型、讀取模型
下一篇
Day19 CNN卷積神經網路程式(7):學習新資料
系列文
AI+Line30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言