系统相关
首页 > 系统相关> > 使用Keras卷积网络的内存问题

使用Keras卷积网络的内存问题

作者:互联网

我对使用大数据的ML非常陌生,之前我曾使用Keras通用卷积示例进行狗/猫分类,但是当我对我的图像集应用类似的方法时,我遇到了内存问题.

我的数据集由非常长的图像组成,大小为10048 x1687像素.为了避免内存问题,我使用批量大小为1,一次向模型提供一个图像.

该模型有两个卷积层,每个层都跟随最大池,这使得平坦层在完全连接层之前大约有290,000个输入.

然而,在运行之后,内存使用率会立即达到其限制(8Gb).

所以我的问题如下:

1)在本地Python处理这种大小的计算的最佳方法是什么(没有云利用率)?我需要使用其他python库吗?

解决方法:

看看python中的收益率和生成器的概念.您不需要在开头加载所有数据.您应该使batch_size足够小,以免出现内存错误.
您的生成器可能如下所示:

def generator(fileobj, labels, memory_one_pic=1024, batch_size): 
  start = 0
  end = start + batch_size
  while True:
     X_batch = fileobj.read(memory_one_pic*batch_size)
     y_batch = labels[start:end]
     start += batch_size
     end += batch_size
     if not X_batch:
        break
     if start >= amount_of_datasets:
       start = 0
       end = batch_size
     yield (X_batch, y_batch)

……之后你已经准备好了你的架构……

train_generator = generator(open('traindata.csv','rb'), labels, batch_size)
train_steps = amount_of_datasets//batch_size + 1

model.fit_generator(generator=train_generator,
                     steps_per_epoch=train_steps,
                     epochs=epochs)

您还应该阅读batch_normalization,这基本上有助于学习更快,更准确.

标签:convolution,python,memory,keras,computer-vision
来源: https://codeday.me/bug/20191007/1866711.html