Parametreler ve sabitler
ParameterTensor{}
Öğrenilebilir parametrelerin skaler, vektör, matris veya tensor oluşturur.
ParameterTensor {shape,
init='uniform'/*|heNormal|...*/, initOutputRank=1, initValueScale=1.0,
randomSeed=-1,
initValue=0.0, initFromFilePath='',
learningRateMultiplier=1.0}
Parametreler
shape
: parametrenin bir dizi olarak şekli (boyutları). Örneğin(13:42)
, 13 satır ve 42 sütunlu bir matris oluşturmak için. Bazı işlemler için 0 olarak verilen boyutlar otomatik olarak çıkarılır (buraya bakın)init
(varsayılan 'tekdüzen'): rastgele başlatmayı belirtir, örneğininit='heNormal'
(buraya bakın)initOutputRank
(varsayılan 1): Öndeki yayma eksenlerinin sayısını belirtir. Negatifse, -sondaki yayma eksenlerinin sayısı (buraya bakın)initValueScale
(varsayılan 1): Rastgele başlatma değerlerine uygulanan ek ölçeklendirme faktörürandomSeed
(varsayılan -1): Pozitifse, rastgele başlatma için bu rastgele tohumu kullanın. Negatifse, her biri için artan bir sayaç kullanınParameterTensor{}
initValue
: başlatmayı sabit bir değerle belirtir, örneğin.initValue=0
initFromFilePath
: bir dosyadan ilk değerleri yükleyerek başlatmayı belirtir. Örneğin.initFromFilePath="my_init_vals.txt"
learningRateMultiplier
: sistem öğrenmesi oranı buna göre ölçeklendirilir (öğrenmeyi devre dışı bırakmak için 0) (buraya bakın)
Dönüş Değeri
Öğrenilebilir parametrelerin tensor'u.
Description
Bu fabrika işlevi, öğrenilebilir parametrelerin skaler, vektör, matris veya tensorunu, yani eylem tarafından "train"
eğitim sırasında güncelleştirilecek parametreleri içeren olarak tanınan bir tensor oluşturur.
Değerler, hangi isteğe bağlı parametrenin verildiğine bağlı olarak
- verilen
init
rastgele sayılar; - verilen bir sabit
initValue
; veya - verilirse
initFromFilePath
dış giriş dosyasından okunan bir tensor. Varsayılan değer:init="uniform"
.
Derece>2 ile skaler, vektör, matris veya tensor oluşturmak için parametre olarak shape
aşağıdakileri geçirin:
(1)
skaler için;(M)
öğeleri olanM
bir sütun vektör için;(1:N)
öğeleri olanN
bir satır vektör için. Satır vektörleri tek satırlı matrislerdir;(M:N)
satırlar veI
sütunlar içerenN
bir matris için;(I:J:K...)
rastgele derece>2'nin tensor'u için (not: izin verilen en yüksek derece 12'dir); ve(W:H:C)
bir görüntünün boyutlarını kanallarlaC
eşleştiren bir[W x H]
tensor için.
Otomatik boyut çıkarımı
belirli ParameterTensor
işlemlerin anında girişi olarak ağırlıklar için kullanıldığında, bazı boyutları olarak Inferred
belirtmesine izin verilir. Örneğin, matris ürünüParameterTensor{42:Inferred} * x)
otomatik olarak ikinci boyutu boyutuna eşit x
olacak şekilde çıkaracaktır.
Bu, kullanıcının BrainScript kodunu giriş boyutlarını geçirme yükünden kurtaran katman girişleri için son derece kullanışlıdır. Ayrıca, bazı durumlarda, bir katmanın kesin giriş boyutlarını belirlemek çok zahmetli bir işlemdir. Örneğin, doldurma olmadan bir birleştirme/havuz kombinasyonları piramidi üzerinde ilk tam olarak bağlı katman için her bir kıvrım ve havuz işlemi sınır piksellerinin satırlarını veya sütunlarını bırakabilir ve adımlar boyutları ölçeklendirir.
Bu özellik, CNTK önceden tanımlanmış katmanlarının yalnızca çıkış boyutlarıyla belirtilmesine izin veren özelliktir (örn. DenseLayer
{1024}
).
Rastgele başlatma
Rastgele başlatma, aralık/standart sapmanın init
bir fan-in ve fan-out işlevi olarak hesaplandığı tekdüzen ve normal dağılım arasında seçim yapan parametresi tarafından seçilir:
değeri init |
Dağıtım | aralık/standart sapma |
---|---|---|
'heNormal' | Normal | sqrt (2 / fanIn) |
'heUniform' | Üniforma | sqrt (6 / fanIn) |
'glorotNormal' | Normal | sqrt (2 / (fanIn+fanOut)) |
'glorotUniform' | Üniforma | sqrt (6 / (fanIn+fanOut)) |
'xavier' | Üniforma | sqrt (3 / fanIn) |
'üniforma' | Üniforma | 1/20 |
'gaussian' | Normal | sqrt (0,04 / fanIn) |
'sıfır' | yok | 0 |
(Burada zero
bazen belirtmeye initValue=0
uygun bir alternatiftir.) Tekdüzen dağıtım için parametreler [-range, range] içinde tekdüzen olarak başlatılır; normal dağılım için ortalama her zaman sıfırdır.
için varsayılan init
değerin doğrudan kullanılırken ParameterTensor{}
olduğunu uniform
unutmayın.
Ancak, varsayılan, glorotUniform
ve ConvolutionalLayer{}
gibi DenseLayer{}
içinde parametreler içeren katmanlar içindir.
Rastgele başlatma için fan-in ve fan-out
Rastgele başlatma, parametrelerin, yukarıdaki tabloya göre rastgele değerlerin ölçeklendirilmesini belirlemek için kullanılan iyi tanımlanmış bir fan-in ve fan-out'a sahip matris-ürün gibi bir işlemin parçası olduğunu varsayar. Varsayılan olarak, ilk eksen yayma olarak kabul edilir ve kalan eksen/eksenler normal matris ürününün fan-in ve eşleşen semantiğidir.
İsteğe bağlı parametresiinitOutputRank
, öne çıkan eksenlerin sayısını belirtmek için kullanılabilir ve bu eksenlerin fan-out olarak kabul edilmesi gerekir. Örneğin, CNTK'nin genişletilmiş tensor yorumunda yer alan ve boyutsal vektör [K]
ile x
-boyutlu rank-2 nesnesini eşleyen matris [I x J]
ürünü olarak Times
(W, x, outputRank=2)
yazılabilir; burada W
şekli [I x J x K]
bulunur.
Burada rastgele initOutputRank=2
başlatma değerlerinin ölçeklendirilmesinde, fan-out değerinin ve fan-in K
değerinin olduğunu I*J
belirtir.
için initOutputRank
negatif değerler, yayma eksenlerinin sondaki eksenler olduğunu gösterir. Örneğin, tipik bir görüntü işleme kurulumu için ve temel alınan işleminin ConvolutionalLayer{}
filtre çekirdeğinin şekli[W x H x C x K]
K
, burada fan-out, fan-in ise şeklindedirW*H*C
.Convolution()
Bu, tarafından initOutputRank=-1
belirtilir.
Dosyalardan ilk değerleri okuma
İlk değerler bir metin dosyasından okunabilir. Bunu yapmak için isteğe bağlı parametresi initFromFilePath
için bir yol adı geçirin.
Metin dosyasının, sütun başına bir tane olmak üzere boşlukla ayrılmış sayılardan oluşan matris satırları başına bir satırdan oluşması beklenir.
Dosyadaki satır ve sütun boyutları ile eşleşmelidir shape
.
Parametreye özgü öğrenme hızı
İsteğe bağlı learningRateMultiplier
parametre ile parametreye özgü öğrenme hızları gerçekleştirilebilir.
Bu faktör, parametre güncelleştirmeleri yapılırken gerçek öğrenme hızıyla çarpılır.
Örneğin, 0 olarak belirtilirse parametre güncelleştirilmez, sabittir.
Örnekler
Olarak heUniform
başlatılacak normal parametre matrisi (varsayılan değer: heNormal
):
W = ParameterTensor {(outDim:inDim), init=`heUniform`}
Sıfır olarak başlatılacak normal bir sapma parametresi:
b = ParameterTensor {outDim, initValue=0}
Bir dosyadan okunması ve sabit tutulması gereken bir ekleme matrisi:
E = ParameterTensor {(embedDim:vocabSize),
initFromFilePath='./EmbeddingMatrix.txt',
learningRateMultiplier=0} # prevents learning
Renk düzlemleri içeren numChannels
bir -size görüntüsünün tam boyutunda bir [width x height]
sapma parametresi:
bFull = ParameterTensor {(width:height:numChannels)}
Sabit{}
Sabit bir tensor oluşturun.
Constant {scalarValue, rows=1, cols=1}
Parametreler
scalarValue
: bu sabitin değerirows
(varsayılan: 1): sabit bir skaler değilse satır sayısıcols
(varsayılan: 1): sabit skaler değilse sütun sayısı
Dönüş Değeri
Tüm öğelerin ile scalarValue
doldurulduğu skaler veya rank-1 ya da rank-2 boyut [rows x cols]
nesnesi olan sabittir.
Description
Sabit değer. Tek bir değerle (örneğin 0) başlatılan bir skaler veya rank-1 nesnesi (vektör) veya rank-2 nesnesi (matris) olabilir. Vektör ve matris sabitleri için tüm değerlerin aynı olduğundan, öğe açısından işlemler ile birlikte kullanılan sabitler genellikle yayından yararlanılırken skaler olarak belirtilebilir.
Uygulama notu:
A Constant()
, ile bir'dir ParameterTensor{}
learningRateMultiplier=0
.
Örnekler
0..1 aralığında ilişkilendirme ağırlığına alpha
sahip iki değer arasındaki ilişkilendirme ("yumuşak çoğullayıcı"):
SoftMUX (x, y, alpha) = Constant (1-alpha) .* x + Constant (alpha) .* y
Hamming kaybı (cf. burada):
HammingLoss (y, p) = ReduceSum (BS.Boolean.Xor (y, Greater (p, Constant(0.5))))
hl = HammingLoss (multiLabels, probabilities)