2016-05-04 6 views
0

Ich möchte das RESNET Netzwerk in Keras mit dem Kontext Verbindungen implementieren, die Null-Einträge hinzuzufügen, wenn Merkmale/Kanäle Abmessungen nach Mismatch der Originalarbeit:Zero-Padding für RESNET Verknüpfung Verbindungen, wenn die Kanalnummer erhöhen

wenn erhöhen die Dimensionen (. gepunktete Linie Verknüpfungen in Bild 3), wir zwei Möglichkeiten in Betracht ziehen: (A) Die Verknüpfung führt nach wie vor Identitäts Mapping, mit zusätzlichen Null-Einträgen für die Erhöhung Dimensionen gepolstert ... http://arxiv.org/pdf/1512.03385v1.pdf

Es war jedoch nicht in der Lage, es zu implementieren und ich kann keine Antwort im Web oder auf dem Quellcode finden. Alle Implementierungen, die ich gefunden habe, verwenden den 1x1-Faltungstrick für Verknüpfungsverbindungen, wenn die Dimensionen nicht übereinstimmen.

Die Ebene, die ich implementieren möchte, würde den Eingangstensor im Grunde mit einem Tensor mit einem Null-Tensor verketten, um die Dimensionsabweichung zu kompensieren.

Die Idee wäre so etwas wie dieses, aber ich konnte es nicht kriegen:

def zero_pad(x, shape): 
    return K.concatenate([x, K.zeros(shape)], axis=1) 

Hat jemand eine Idee, wie eine solche Schicht zu implementieren hat?

Vielen Dank

Antwort

1

Die Frage wurde auf Github beantwortet:

from keras.layers.convolutional import MaxPooling2D 
from keras.layers.core import Lambda 
from keras import backend as K 


def zeropad(x): 
    y = K.zeros_like(x) 
    return K.concatenate([x, y], axis=1) 


def zeropad_output_shape(input_shape): 
    shape = list(input_shape) 
    assert len(shape) == 4 
    shape[1] *= 2 
    return tuple(shape) 


def shortcut(input_layer, nb_filters, output_shape, zeros_upsample=True): 
    # TODO: Figure out why zeros_upsample doesn't work in Theano 
    if zeros_upsample: 
     x = MaxPooling2D(pool_size=(1,1), 
          strides=(2,2), 
          border_mode='same')(input_layer) 
     x = Lambda(zeropad, output_shape=zeropad_output_shape)(x) 
    else: 
     # Options B, C in ResNet paper... 
: https://github.com/fchollet/keras/issues/2608

Es ist etwas so sein würde

Verwandte Themen