我创建了如下模型(与theano后端的keras) . 当我在我的CPU上运行它时,它给了我内存错误 . 我有8GB DDR3内存,在调用model1.fit之前我的内存消耗为2.3 GB . 此外,我可以使用高达7.5GB的RAM,程序崩溃 . 我也试过在GPU(Nvedia GeForce GTX 860M)4GB上运行,但我仍然遇到内存错误 .

def get_model_convolutional():
    model = keras.models.Sequential()
    model.add(Conv2D(128, (3, 3), activation='relu', strides = (1,1), input_shape=(1028, 1028, 3)))
    model.add(Conv2D(3, (3, 3), strides = (1,1), activation=None))
    sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
    model.compile(loss='categorical_crossentropy', optimizer=sgd)
    return model

if __name__ == "__main__":
    model1 = get_model_convolutional()
    train_x = np.ones((108, 1208, 1208, 3), dtype=np.uint8)
    train_y = np.ones((108, 1204, 1204, 3), dtype = np.uint8)    
    model1.fit(x_train, y_train, verbose = 2,epochs=20, batch_size=4)

我尝试打印model.summary()时的输出也是

Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_1 (Conv2D)            (None, 1026, 1026, 128)   3584      
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 1024, 1024, 3)     3459      
=================================================================
Total params: 7,043
Trainable params: 7,043
Non-trainable params: 0
_________________________________________________________________

为什么需要这么多的内存?我试图计算,但我认为应该需要大约1.5GB的内存 . 这是我的第一个模特 .