2017-07-13 5 views
3

Ich versuche, ein einfaches Faltungsmodell in CNTK zu erstellen, wie untenCNTK Convolution1d

def create_model(hidden_dim, output_dim): 
    nn=C.layers.Sequential([ C.layers.Embedding(shape=50,name='embedding'), 
     C.layers.Convolution1D((40,),num_filters=5, activation=C.ops.relu), 
     C.layers.GlobalMaxPooling(), 
     C.layers.Dense(shape=40, activation=C.ops.tanh, init_bias=0.1), 
     C.layers.Dense(shape=2, activation=None, init_bias=0.1) 
     ]) 
    return nn 

gezeigt, aber ich halte auf den folgenden Fehler bekommen Valueerror: Convolution Karte Tensor muss Rang 1 oder gleich den Eingang Tensor.

Antwort

1

Ich konnte dieses Problem beheben, indem ich den reduction_rank = 0 als Parameter für den Convolution1d-Layer hinzufügte.

def create_model(hidden_dim, output_dim): 
nn=C.layers.Sequential([ C.layers.Embedding(shape=50,name='embedding', **reduction_rank=0**), 
    C.layers.Convolution1D((40,),num_filters=5, activation=C.ops.relu), 
    C.layers.GlobalMaxPooling(), 
    C.layers.Dense(shape=40, activation=C.ops.tanh, init_bias=0.1), 
    C.layers.Dense(shape=2, activation=None, init_bias=0.1) 
    ]) 
return nn 

vom CNTK Layers Documentation

reduction_rank (int, standardmäßig auf 1) Zitiert - auf 0 gesetzt, wenn Eingang Artikel sind Skalare (Eingang keine Tiefenachse hat), z.B. ein Audiosignal oder ein Schwarz-Weiß-Bild, das mit Tensor Form (H, W) anstelle von (1, H, W)

Ich erwarte gespeichert ist, dass CNTK die Lage wäre, diese Sache automatisch

schließen