0

我正在研究一个视频分类问题。数据以每个视频的帧数的形式给出,所以我创建了一个生成器,它采用 dim = (batch_size, #frames, IMG_SIZE, IMG_SIZE, 3) 的视频数组keras.utils.Sequence

我在 Kaggle 笔记本上工作,代码运行良好,然后我在 python 脚本中使用相同的代码在我的机器上运行它,我发现代码没有使用 GPU

我做了一些研究,有些人建议使用tf.data而不是,keras.utils.Sequence但我没有找到一种方法来做到这一点

from skimage.io import imread
from skimage.transform import resize
import math

class imgs_gen(tf.keras.utils.Sequence):

    def __init__(self, x_set, y_set, batch_size, IMG_SIZE):
        self.x, self.y = x_set, y_set
        self.batch_size = batch_size
        self.img_size = IMG_SIZE

    def __len__(self):        
        return int(len(self.x) / self.batch_size)


    def __getitem__(self, idx):
        
        vedios_batch = self.x[idx * self.batch_size : (idx + 1) * self.batch_size]
        batch_y = [int(x[3:]) - 1 for x in  self.y[idx * self.batch_size : (idx + 1) * self.batch_size]]
        
       
        X = np.array([[resize(imread(file_name), (self.img_size, self.img_size)) for file_name in imgs_batch] for imgs_batch in vedios_batch])
        y = tf.keras.utils.to_categorical(batch_y , num_classes=16)
        
       
        return X, y

4

0 回答 0