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
df.shape
Out[78]: (1000, 512, 512, 3)错误信息:
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一定有相同的错误。或者应该有一些错误或者其他的解决方案。
发布于 2018-07-14 13:12:44
我不认为模型太大,适合您的GPU与8GB的内存。
在大多数情况下,有一个进程使用GPU中的大部分内存资源。
您可以检查哪个进程消耗了大部分GPU内存。
nvidia-smi如果您在Process name中看到类似于Process name的内容,只需使用kill -9 [process ID]终止该进程即可。
该进程可能是您执行的模型,它不会被杀死并消耗大部分GPU内存。
https://stackoverflow.com/questions/51337578
复制相似问题