Transformer blokları
Konumsal kodlama, post-norm encoder ve decoder.
01PositionalEncoding#
PositionalEncoding(embed,max_len=512,learnable=false) sinüs/kosinüsü [B,T,E] girdisine ekler. Sabit tablo büyür; learnable parametre tablosu ilk boyutta kalır, T≤max_len koruyun. Öğrenilebilir tablo sinüsoidal başlar ve batch boyunca gradyan toplar.
02TransformerEncoderLayer#
TransformerEncoderLayer(embed,heads,ff=0,dropout=0.1); ff≤0 ise 4·embed. Self-attention→dropout→residual→LayerNorm; Linear→GELU→Linear→dropout→residual→LayerNorm. Post-norm mimarisidir.
Sequential encoder({ std::make_shared<PositionalEncoding>(64,128), std::make_shared<TransformerEncoderLayer>(64,4,256,0.1f)});auto y=encoder.forward(Tensor::zeros({4,32,64}));03TransformerDecoderLayer#
TransformerDecoderLayer(embed,heads,ff=0,dropout=0.1) maskeli self-attention, cross-attention ve FFN içerir. Önce forward(target,memory) çağırın. Tek argümanlı forward daha önce kaydedilmiş memory ister; ilk çağrıda ModelError üretir.
04Memory türevi sınırı#
Decoder backward yalnız target türevi döndürür. İç cross-attention’ın dk/dv türevleri dönüşe eklenmez ve decoder public API’sinde sunulmaz. Tam encoder-decoder eğitimi için bu aktarımı ekleyen genişletme veya açık cross-attention akışı gerekir.