2017-11-21 1 views
1

Mein Eingang ist 299,299,3ResourceExhaustedError wenn der Form [] und Typ float Keras

Meine Grafikkarte ist 1070 (8 GB RAM)

Weitere Specs Zuweisung Tensor: Python 3.6, Keras 2 .xx, ​​Tensorflow-Backend (1.4), Windows 7

Selbst die Losgröße 1 funktioniert nicht.

Ich fühle mich wie meine Karte eine Partie der Größe eines handhaben sollte -

Hier ist mein Code:

def full_model(): 
    #model layers 
    input_img = Input(shape=(299, 299, 3)) 

    tower_1 = Conv2D(64, (1, 1,), padding='same', activation='relu')(input_img) 
    tower_1 = Conv2D(64, (3, 3), padding='same', activation='relu')(tower_1) 

    tower_2 = Conv2D(64, (1, 1), padding='same', activation='relu')(input_img) 
    tower_2 = Conv2D(64, (5, 5), padding='same', activation='relu')(tower_2) 

    concatenated_layer = keras.layers.concatenate([tower_1, tower_2], axis=3) 

    bottleneck = MaxPooling2D((2, 2), strides=(2, 2), padding='same')(concatenated_layer) 
    flatten = Flatten()(bottleneck) 
    dense_1 = Dense(500, activation = 'relu')(flatten) 
    predictions = Dense(12, activation = 'softmax')(dense_1) 


    model = Model(inputs= input_img, output = predictions) 
    SGD =keras.optimizers.SGD(lr=0.1, momentum=0.0, decay=0.0, nesterov=False) 
    model.compile(optimizer=SGD, 
        loss='categorical_crossentropy', 
        metrics=['accuracy']) 

    return model 




hdf5_path =r'C:\Users\Moondra\Desktop\Keras Applications\training.hdf5' 
model = full_model() 


def run_model(hdf5_path, 
       epochs = 10, 
       steps_per_epoch =8, 
       classes =12, 
       batch_size =1, model= model): 



    for i in range(epochs): 
     batches = loading_hdf5_files.load_batches(batch_size =1, 
                hdf5_path=hdf5_path , 
                classes = classes)  
     for i in range(steps_per_epoch): 
      x,y = next(batches) 
      #plt.imshow(x[0]) 
      #plt.show() 
      x = (x/255).astype('float32') 
      print(x.shape) 
      data =model.train_on_batch(x,y) 
      print('loss : {:.5}, accuracy : {:.2%}'.format(*data)) 

    return model 

Ich kann nicht einmal eine Partie der Größe eines zu handhaben zu sein scheinen.

Hier ist der letzte Teil des Fehlers:

ResourceExhaustedError (see above for traceback): OOM when allocating tensor of shape [] and type float 
    [[Node: conv2d_4/random_uniform/sub = Const[dtype=DT_FLOAT, value=Tensor<type: float shape: [] values: 0.0866025388>, _device="/job:localhost/replica:0/task:0/device:GPU:0"]()]] 
+0

Wann erhöht sich dieser Fehler? an welcher Linie? – grovina

+0

Nachdem die Form des Tensors 'print (x.shape) 'ausgedruckt wurde, bleibt es für etwa 5 Sekunden hängen und dann kommt der Fehler. – Moondra

Antwort

0

Es stellt sich heraus, dass ich viel zu viele Parameter.

Nach dem Ausführen von print(model.summary()) hatte ich eine Milliarde plus Parameter.

Ich erhöhte Größe von MaxPooling und keine Probleme mehr.

Verwandte Themen