我正在使用Keras开发深度学习模型,并加快计算速度,我想使用google colab上提供的GPU。
我的图片文件已加载到我的google云端硬盘上。我有24'000张图像用于训练4'000用于测试我的模型。
然而,当我将图像加载到数组中时,需要很长时间(差不多2小时)所以每次使用谷歌colab笔记本时这样做都不是很方便。
你知道如何加速这个过程吗?这是我目前的代码:
TRAIN_DIR = "Training_set/X"
TRAIN_DIR_Y = "Training_set/Y"
IMG_SIZE = 128
def parse_img_data(path):
X_train = []
index_train = []
img_ind = []
for img in tqdm(os.listdir(path)):
img_ind.append(int(img.split('.')[0])-1)
path = os.path.join(TRAIN_DIR,img)
img = cv2.imread(path,cv2.IMREAD_COLOR)
img = cv2.resize(img, (IMG_SIZE,IMG_SIZE))
X_train.append(np.array(img))
return np.array(img_ind), np.array(X_train)
ind_train, X_train = parse_img_data(TRAIN_DIR)
如果你能帮助我,我将非常感激。
泽维尔
您可以尝试安装Google云端硬盘文件夹(您可以在示例菜单中找到代码段)并使用ImageDataGenerator
和flow_from_directory()
。检查documentation here
我一直在尝试,对于那些好奇的人,我无法使用google驱动器中的文件夹中的目录流。协作文件环境不读取路径并给出“文件夹不存在”错误。我一直试图解决问题和搜索堆栈,类似的问题已发布在这里Google collaborative和这里Google Colab can't access drive content,没有有效的解决方案,并由于某种原因,许多downvotes给那些问。
我发现在谷歌colab中读取20k图像的唯一解决方案是上传它们然后处理它们,浪费了两个悲伤时间。这是有道理的,google使用id标识驱动器内部的内容,来自目录的流需要识别数据集,以及具有文件夹绝对路径的类,与google驱动器识别方法不兼容。替代方案可能是使用谷歌云环境,而不是我想和付费。我们正在获得相当多的免费,因为它是。这是我对新手的了解情况,如有错误请指正。
edit1:我能够在google collab上使用来自目录的流,谷歌也确实用路径识别东西,问题是如果你使用os.getcwd(),它不能正常工作,如果你使用它会给你那个当前的工作目录是“/ content”,实际上是“/ content / drive / My Drive / foldersinsideyourdrive /...../ folderthathasyourcollabnotebook /。”如果你在traingenerator中更改路径以便它包含此设置,并且忽略操作系统,它的工作原理。但是,即使从目录中使用flow,但是无论如何都无法训练我的cnn,我有ram的问题,可能会发生在我身上的事情。
一定要执行
from google.colab import drive
drive.mount('/content/drive/')
以便笔记本识别路径