Birçok sinir ağı kütüphanesinde, Keras veya Lasagne'de olduğu gibi 'katmanları gömmek' vardır .
Belgeleri okuduğumuza rağmen işlevini anladığımdan emin değilim. Örneğin, Keras belgelerinde şöyle yazıyor:
Pozitif tamsayıları (indeksleri) sabit büyüklükteki vektörlere dönüştürün, örn. [[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]
Bilgili bir kişi ne yaptığını ve ne zaman kullanacağınızı açıklayabilir mi?
EDIT: Dokümantasyona yapıştırma konusunda dokümantasyondan yapıştırılacak fazla bir şey yok, bu yüzden sorumu. Yaptığı dönüşümü ve neden kullanılması gerektiğini anlamıyorum.
Her neyse, Keras'da şöyle açıklanır:
katıştırma
keras.layers.embeddings.Embedding (input_dim, output_dim, init = 'üniforma', input_length = Yok, ağırlıklar = Yok, W_regularizer = Yok, W_constraint = Yok, mask_zero = Yanlış, Hatalı) Pozitif tamsayıları (indeksler) sabit boyutlu vektörlere dönüştürün , Örneğin. [[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]
Giriş şekli: Şekilli 2D tensör: (nb_samples, array_length). Çıkış şekli: 3 boyutlu tensör şekli: (nb_samples, array_length, output_dim). Argümanlar:
input_dim: int> = 0. Kelimenin büyüklüğü, yani. Giriş verilerinde oluşan 1 + maksimum tamsayı dizini. output_dim: int> = 0 Yoğun yerleştirmenin boyutu
Ve işte Lazanya’da nasıl açıklandığı:
Sözcük gömmeleri için bir katman. Giriş, bir tamsayı tipi Tensör değişkeni olmalıdır.
Parametreler: incoming: Layer örneği veya bir tuple
Bu katmana beslenen katman veya beklenen girdi şekli.
input_size: int
Farklı gömme sayısı. Son yerleştirme, index__dosyası - 1 dizinine sahip olacaktır.
output_size: int
Her gömülmenin boyutu.
W: Theano paylaşımlı değişken, ifade, numpy dizisi veya çağrılabilir
Gömülü matris için başlangıç değeri, ifade veya başlatıcı. Bu şekilli bir matris olmalıdır (input_size, output_size). Daha fazla bilgi için lasagne.utils.create_param () 'e bakınız.
Örnekler
>>> from lasagne.layers import EmbeddingLayer, InputLayer, get_output >>> import theano >>> x = T.imatrix() >>> l_in = InputLayer((3, )) >>> W = np.arange(3*5).reshape((3, 5)).astype('float32') >>> l1 = EmbeddingLayer(l_in, input_size=3, output_size=5, W=W) >>> output = get_output(l1, x) >>> f = theano.function([x], output) >>> x_test = np.array([[0, 2], [1, 2]]).astype('int32') >>> f(x_test) array([[[ 0., 1., 2., 3., 4.], [ 10., 11., 12., 13., 14.]], [[ 5., 6., 7., 8., 9.], [ 10., 11., 12., 13., 14.]]], dtype=float32)