İkili İşlemler
Elementwise ikili işleçleri.
ElementTimes (x, y)
x .* y
Minus (x, y)
x - y
Plus (x, y)
x + y
LogPlus (x, y)
Less (x, y)
Equal (x, y)
Greater (x, y)
GreaterEqual (x, y)
NotEqual (x, y)
LessEqual (x, y)
BS.Boolean.And (x, y)
BS.Boolean.Or (x, y)
BS.Boolean.Xor (x, y)
Parametreler
x
: sol girişy
: sağ giriş
ve boyutlarının eşleşmesi x
gerekir (yayın kurallarına tabidir, aşağıya bakın).y
Üç Boolean
işlem için her iki girişin de 0 veya 1 olması beklenir, aksi takdirde işlevlerin davranışı belirtilmez ve aslında gelecek sürümlerde değişir.
Seyrek değerler şu anda desteklenmiyor.
Döndürülen değer
Bu işlevler ilgili işlemlerin sonucunu döndürür. İlişki işleçleri (Equal()
vb.) ve üç Boolean
işlem 0 veya 1 değerleri döndürür.
Çıkış boyutu veya tensor şekli, yayına tabi olarak aşağıdaki girişlerle aynıdır.
Açıklamalar
Bunlar yaygın ikili işleçlerdir.
Bunlar öğe yönünde uygulanır.
(BrainScript'in *
işlecinin element düzeyinde olmadığını ancak matris ürününün kısaltması olduğunu unutmayın. Bu, örneğin Python numpy
kitaplığından farklıdır.)
Girişlerin boyutları, yayın dışında aynı olmalıdır.
Yayın semantiği
Python numpy
kitaplığından sonra modelleri CNTK bir kavram olan yayın, girişlerden birindeki boyutun diğer girişlerin olmadığı 1 olabileceği anlamına gelir.
Bu durumda, 1 boyutlu giriş, karşılık gelen diğer girişin boyutu olan n
kez kopyalanırn
.
Tensor dereceleri eşleşmezse, girişin daha az boyuta sahip tensor şeklinin 1 olduğu varsayılır ve yayın tetiklenir.
Örneğin, bir [13 x 1]
[1 x 42]
vektöre tensor eklemek, tüm birleşimlerin toplamlarını içeren bir [13 x 42]
vektör verir.
İlişki İşlemleri
İlişki işleçleri (Equal()
vb.) birbirinden farklı değildir, gradyanları her zaman 0 olarak kabul edilir.
Bayraklar için kullanılabilir, örneğin işlemde If()
koşul bağımsız değişkeni olarak.
LogPlus()
İşlem, LogPlus()
logaritmik biçimde temsil edilen değerlerin toplamını hesaplar.
Yani şunları hesaplar:
LogPlus (x, y) = Log (Exp (x) + Exp (y))
burada x
ve y
değerlerin logaritmasıdır.
Bu işlem, genellikle yalnızca logaritmik bir gösterimin uygun sayısal doğruluğu sağlaması için çok küçük olan olasılıklarla ilgilenirken yararlıdır.
Not: Bu işlemin bir diğer yaygın adı log-add-exp,örneğin SciPy'dir.
Örnekler
Standart Sigmoid Katmanı
Bu katman, öğe düzeyinde ikili +
dosyasını kullanır:
z = Sigmoid (W * x + b)
Yukarıdakilerin element düzeyinde olmadığını, ancak matris ürününün kısaltması olduğunu *
unutmayın.
Softmax Etkinleştirmesinin Alternatif Uygulaması
Etkinleştirme Softmax()
işlevi yayın kullanılarak Minus
yazılabilir:
MySoftmax (z) = Exp (z - ReduceLogSum (z))
Burada logaritmik ReduceLogSum()
toplamını hesaplayarak vektörün z
skaler olmasını sağlar. Çıkarma işleminin semantiğini yayınlayarak, bu skaler her giriş değerinden çıkarılır.
Bu, Softmax işlevindeki tüm değerlerin toplamına göre bölmeyi uygular.
Elementwise Max of Two Inputs
öğe düzeyinde en fazla iki giriş ve If()
birleşimi Greater()
olarak hesaplanabilir:
MyElementwiseMax (a, b) = If (Greater (a, b), a, b)
Bu aynı zamanda yayın ile de çalışır. Örneğin, doğrusal doğrultucu ikinci giriş olarak bir skaler sabit kullanılarak bununla yazılabilir:
MyReLU (x) = MyElementwiseMax (x, Constant(0))