Aracılığıyla paylaş


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ğin init='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ın ParameterTensor{}
  • 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 olan M bir sütun vektör için;
  • (1:N) öğeleri olan N bir satır vektör için. Satır vektörleri tek satırlı matrislerdir;
  • (M:N)satırlar ve I sütunlar içeren N 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ı kanallarla C 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 Inferredbelirtmesine izin verilir. Örneğin, matris ürünüParameterTensor{42:Inferred} * x) otomatik olarak ikinci boyutu boyutuna eşit xolacak ş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=0uygun 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 Kdeğ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=-1belirtilir.

Dosyalardan ilk değerleri okuma

İlk değerler bir metin dosyasından okunabilir. Bunu yapmak için isteğe bağlı parametresi initFromFilePathiç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ğeri
  • rows (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 scalarValuedoldurulduğ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)