首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ResourceExhaustedError (回溯参见上文):当分配形状的张量[3,256,512]和浮动类型时,OOM

ResourceExhaustedError (回溯参见上文):当分配形状的张量[3,256,512]和浮动类型时,OOM
EN

Stack Overflow用户
提问于 2018-07-14 10:26:35
回答 1查看 1K关注 0票数 0
代码语言:javascript
复制
import keras
from keras.models import Sequential
from keras.layers import Dense,Flatten,Dropout
from keras.layers.convolutional import Conv2D,MaxPooling2D
#from sklearn.model_selection import train_test_split
import keras.optimizers
import gc
label=pd.read_csv('trainLabels.csv')
label=label.sort_values(by=['image'])
model = Sequential()
model.add(Conv2D(64,(3,3),strides=(1,1),input_shape=(512,512,3),padding='same',activation='relu',kernel_initializer='uniform'))
model.add(Conv2D(64,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(128,(3,2),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))
model.add(Conv2D(128,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(256,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))
model.add(Conv2D(256,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))
model.add(Conv2D(256,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(512,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))
model.add(Conv2D(512,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))
model.add(Conv2D(512,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(512,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))
model.add(Conv2D(512,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))
model.add(Conv2D(512,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(4096,activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(4096,activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1,activation='relu'))
opt = keras.optimizers.Adagrad(lr=0.01)
model.compile(loss='mean_squared_error', optimizer=opt)
#ID=train_test_split(list(range(1000)),test_size=0.2,stratify=label['level'].iloc[0:1000])
df=np.array(df)
model.fit(df, label['level'].iloc[0:1000],epochs=100, batch_size=1)
gc.collect()

GPU:GTX980M-8GB CPU: 2.7GHZ 8核

Memeory: 16

代码语言:javascript
复制
df.shape
    Out[78]: (1000, 512, 512, 3)

错误信息:

代码语言:javascript
复制
ResourceExhaustedError (see above for traceback): OOM when allocating tensor of shape [3,3,256,512] and type float
     [[Node: training_9/Adagrad/zeros_14 = Const[dtype=DT_FLOAT, value=Tensor<type: float shape: [3,3,256,512] values: [[[0 0 0]]]...>, _device="/job:localhost/replica:0/task:0/device:GPU:0"]()]]

图像是512×512,通过一种标准的vgg19,我想问的是,这个问题是由硬件缺陷引起的,不能用任何其他方法解决吗?也就是说,我不能使用8GB的GPU通过vgg19处理512X512图像。我有点怀疑,因为在添加批处理大小时,使用11 on的GPU一定有相同的错误。或者应该有一些错误或者其他的解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-14 13:12:44

我不认为模型太大,适合您的GPU与8GB的内存。

在大多数情况下,有一个进程使用GPU中的大部分内存资源。

您可以检查哪个进程消耗了大部分GPU内存。

代码语言:javascript
复制
nvidia-smi

如果您在Process name中看到类似于Process name的内容,只需使用kill -9 [process ID]终止该进程即可。

该进程可能是您执行的模型,它不会被杀死并消耗大部分GPU内存。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51337578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档