簡體   English   中英

如何在標准化圖像時阻止我的 Colab 筆記本崩潰?

[英]How can I stop my Colab notebook from crashing while normalising my images?

我正在嘗試制作一個能夠識別人類情緒的 model。 我的代碼和 RAM 一開始就很好:
內存和磁盤
但是當我嘗試標准化我的圖像時,RAM 會急劇上升
跳了RAM
然后 Colab 就崩潰了:
崩潰消息 1
崩潰消息 2
崩潰消息 3

這是導致 colab 崩潰的代碼塊:

import os
import matplotlib.pyplot as plt
import cv2

data = []

for emot in os.listdir('./data/'):
    for file_ in os.listdir(f'./data/{emot}'):
        img = cv2.imread(f'./data/{emot}/{file_}', 0)
        img = cv2.bitwise_not(img)
        img /= 255.0 # <--- This is the line that causes colab to crash
        data.append([img, emotions.index(emot)])

如果我刪除img /= 255.0 ,它不會崩潰,但是我有未標准化的圖像:: 沒有崩潰
我什至嘗試在另一個塊中對其進行規范化:

for i in range(len(data)):
    data[i][0] = np.array(data[i][0]) / 255.0

但它不起作用,仍然崩潰

我想通過一個例子來go。 首先讓我們看一下下面的代碼。

import numpy as np
x = np.random.randint(0, 255, size=(100, 32, 32), dtype=np.int16)

print('Present data type', x.dtype)
# What you did
y = x/255
print('Present data type', y.dtype)
# What you should do
z = (x/255).astype(np.float16)
print('Present data type', z.dtype)

Output:

Present data type int16
Present data type float64
Present data type float16

如果您仔細觀察,當我划分x變量並聲明y=x/255時,數據類型將更改為float64 如果您划分 NumPy 數組的int數據類型,默認情況下將其類型轉換為float64 通常,“float64”包含較大的 memory。 因此,在划分一個int類型的 NumPy 矩陣時,對於較大的數據集,應該始終將類型轉換為較短的數據類型。

如果您執行的代碼在沒有img /= 255.0塊的情況下流暢運行,那么就是這種情況。 除法后,您應該將img變量類型轉換為可能的最低float類型,例如np.float16np.float32 但是, np.float16有一些限制,TensorFlow 不完全支持它(TF 將其轉換為 32 位浮點數),您可以使用np.float32數據類型。

因此,請嘗試在img /= 255.0行之后添加img.astype(np.float16)img.astype(np.float32)

給出了修改后的代碼版本,

import os
import matplotlib.pyplot as plt
import cv2

data = []

for emot in os.listdir('./data/'):
    for file_ in os.listdir(f'./data/{emot}'):
        img = cv2.imread(f'./data/{emot}/{file_}', 0)
        img = cv2.bitwise_not(img)
        img = (img/255.0).astype(np.float16) # <--- This is the suggestion
        data.append([img, emotions.index(emot)])

假設管道中的下一步是從圖像語料庫中創建tf.data.Dataset object,您可以使用Dataset.map()將預處理移至數據加載管道以節省 memory 空間。 Tensorflow有一個非常詳細的指南,說明如何在此處執行此操作-> https://www.tensorflow.org/guide/data#preprocessing_data

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM