我正在研究一个视频分类问题。数据以每个视频的帧数的形式给出,所以我创建了一个生成器,它采用 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