【问题标题】:Memory error while using keras使用keras时出现内存错误
【发布时间】:2016-08-11 06:58:42
【问题描述】:

我正在为 CNN 使用 keras,但问题是存在内存泄漏。错误是

        anushreej@cpusrv-gpu-109:~/12EC35005/MTP_Workspace/MTP$ python cnn_implement.py
        Using Theano backend.
        [INFO] compiling model...
        Traceback (most recent call last):
          File "cnn_implement.py", line 23, in <module>
            model = CNNModel.build(width=150, height=150, depth=3)
          File "/home/ms/anushreej/12EC35005/MTP_Workspace/MTP/cnn/networks/model_define.py", line 27, in build
            model.add(Dense(depth*height*width))
          File "/home/ms/anushreej/anaconda3/lib/python3.5/site-packages/keras/models.py", line 146, in add
            output_tensor = layer(self.outputs[0])
          File "/home/ms/anushreej/anaconda3/lib/python3.5/site-packages/keras/engine/topology.py", line 458, in __call__
            self.build(input_shapes[0])
          File "/home/ms/anushreej/anaconda3/lib/python3.5/site-packages/keras/layers/core.py", line 604, in build
            name='{}_W'.format(self.name))
          File "/home/ms/anushreej/anaconda3/lib/python3.5/site-packages/keras/initializations.py", line 61, in glorot_uniform
            return uniform(shape, s, name=name)
          File "/home/ms/anushreej/anaconda3/lib/python3.5/site-packages/keras/initializations.py", line 32, in uniform
            return K.variable(np.random.uniform(low=-scale, high=scale, size=shape),
          File "mtrand.pyx", line 1255, in mtrand.RandomState.uniform (numpy/random/mtrand/mtrand.c:13575)
          File "mtrand.pyx", line 220, in mtrand.cont2_array_sc (numpy/random/mtrand/mtrand.c:2902)
        MemoryError

现在我无法理解为什么会发生这种情况。我的训练图像非常小,只有 150*150*3。

代码是-:

        # import the necessary packages
        from keras.models import Sequential
        from keras.layers.convolutional import Convolution2D
        from keras.layers.core import Activation
        from keras.layers.core import Flatten
        from keras.layers.core import Dense

        class CNNModel:
          @staticmethod
          def build(width, height, depth):
            # initialize the model
            model = Sequential()
            # first set of CONV => RELU
            model.add(Convolution2D(50, 5, 5, border_mode="same", batch_input_shape=(None, depth, height, width)))
            model.add(Activation("relu"))

            # second set of CONV => RELU
            # model.add(Convolution2D(50, 5, 5, border_mode="same"))
            # model.add(Activation("relu"))

            # third set of CONV => RELU
            # model.add(Convolution2D(50, 5, 5, border_mode="same"))
            # model.add(Activation("relu"))

            model.add(Flatten())

            model.add(Dense(depth*height*width))

            # if weightsPath is not None:
            #   model.load_weights(weightsPath) 

            return model

【问题讨论】:

  • 你怎么知道有内存泄漏?而不是另一个问题?

标签: memory-leaks keras


【解决方案1】:

我遇到了同样的问题,我认为问题在于扁平化层之前的数据点数量超过了您的系统可以处理的数量(我在不同的系统中进行了尝试,所以一个具有高 ram 的系统工作并且具有较少的 ram 给出了这个错误) .只需添加更多 CNN 层以减小大小,然后添加一个展平层即可。

这给了我错误:

model = Sequential()
model.add(Convolution2D(32, 3, 3,border_mode='same',input_shape=(1, 96, 96),activation='relu'))
model.add(Convolution2D(64, 3, 3,border_mode='same',activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(Flatten())
model.add(Dense(1000,activation='relu'))
model.add(Dense(97,activation='softmax'))

这并没有报错

model = Sequential()
model.add(Convolution2D(32, 3, 3,border_mode='same',input_shape=(1, 96, 96),activation='relu'))
model.add(Convolution2D(64, 3, 3,border_mode='same',activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(Convolution2D(64, 3, 3,border_mode='same',activation='relu'))
model.add(Convolution2D(128, 3, 3,border_mode='same',activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(Flatten())
model.add(Dense(1000,activation='relu'))
model.add(Dense(97,activation='softmax')

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2018-09-02
    • 2017-09-09
    • 2018-02-06
    • 1970-01-01
    • 2020-05-28
    • 2016-06-02
    • 1970-01-01
    • 2017-11-22
    • 2019-11-24
    相关资源
    最近更新 更多