2016-04-08 3 views
2

Ich bin ein Theano und Lasagne Benutzer.Wie kann man den Gewichtswert an einer bestimmten Stelle mit der Nano oder Lasagne auf Null halten?

Ich habe ein Problem mit der variablen Länge der Eingangsmatrix.

d.h)

x1 = [0, 1, 3] 
x2 = [1, 2] 

matrix_embedding = [ [ 0.1, 0.2, 0.3], 
        [ 0.4, 0.5, 0.6], 
        [ 0.2, 0.3, 0.5], 
        [ 0.5, 0.6, 0.7], ] 

matrix_embedding[x1] = [ 
        [ 0.1, 0.2, 0.3], 
        [ 0.4, 0.5, 0.6], 
        [ 0.5, 0.6, 0.7] 
          ] 

matrix_embedding[x2] = [ 
        [ 0.4, 0.5, 0.6], 
        [ 0.2, 0.3, 0.5], 
          ] 

Also, ich versuche, die Polsterung zu verwenden.

matrix_padding_embedding = [ [ 0.1, 0.2, 0.3], 
          [ 0.4, 0.5, 0.6], 
          [ 0.2, 0.3, 0.5], 
          [ 0.5, 0.6, 0.7], 
          [ 0.0, 0.0, 0.0] ] 

x1 = [0, 1, 3] 
x2 = [1, 2, -1] 

matrix_embedding[x1] = [ 
        [ 0.1, 0.2, 0.3], 
        [ 0.4, 0.5, 0.6], 
        [ 0.5, 0.6, 0.7] 
          ] 

matrix_embedding[x2] = [ 
        [ 0.4, 0.5, 0.6], 
        [ 0.2, 0.3, 0.5], 
        [ 0.0, 0.0, 0.0]  ] 

Aber nach der Verarbeitung aktualisiert Theano die matrix_padding_embedding Parameter, so, matrix_padding_embedding [-1] nicht mehr 0.

Wie der Gewichtswert auf Null in matrix_padding_embedding halten [-1]?

Oder ob es andere Möglichkeiten gibt, mit variabler Länge umzugehen?

Antwort

0

können Sie die gepolsterte Matrix durch die Verkettung zweier Matrizen erstellen, wie,

import theano as the 
import theano.tensor as ten 
import numpy as np  
matrix_embedding = the.shared(np.asarray([[0.1, 0.2, 0.3], 
              [0.4, 0.5, 0.6], 
              [0.2, 0.3, 0.5], 
              [0.5, 0.6, 0.7]])) 
matrix_padding_embedding = ten.concatenate((matrix_embedding, ten.zeros((1, 3)))) 

x = ten.lvector() 
y = ten.sum(matrix_padding_embedding[x]) 
grad = the.grad(y, matrix_embedding) 
fn = the.function([x], [matrix_padding_embedding, grad]) 

x2 = [1, 2, -1] 
p, g = fn(x2) 
print p 
print g 

Ergebnisse sind

# [[ 0.1 0.2 0.3] 
# [ 0.4 0.5 0.6] 
# [ 0.2 0.3 0.5] 
# [ 0.5 0.6 0.7] 
# [ 0. 0. 0. ]] 
# 
# [[ 0. 0. 0.] 
# [ 1. 1. 1.] 
# [ 1. 1. 1.] 
# [ 0. 0. 0.]] 
+0

Danke, es war sehr nützlich !!. –

+0

@ 경호경호 du bist willkommen. – dontloo

Verwandte Themen