Torch

2016-04-09 10 views
-2

'daki 'nn', 'dp' ve 'dpnn' modüllerinin karıştırılması bazı meşale kodlarını okuduğumda "nn" ve "dp" modeli ile karıştırıldım. Sadece dp (no nn) gerektiren birçok kodda görüyorum, ama nn.methodA niçin kullanabiliyor? nn kullanmadan niçin kullanabilir? Ayrıca, yöntem dpnn'de tanımlanmıştır! Dpnn.methodA olarak kullanılmalı mı? kodlar böyle yapın:Torch

require 'dp' 
    ... 
    nn.methodA() [the methodA is defined in 'dpnn'] 

cevap

2

'dp' bir bağımlılık olarak 'nn' vardır ve 'nn' gerektirir. Daha spesifik olarak, require 'dp' çağrılırken, 'dp' init betiği çalıştırılır. Bu, require 'dpnn''u (see) çağırır. Sonradan 'dpnn' init betiği çalıştırılır ve require 'nn' (see) olarak adlandırılır. Ayrıca, modüllerin aynı genel ad alanını paylaşması da vardır. Bu, modüllerin abc veya nn veya neyse ayarlayabileceği anlamına gelir. Birçok modül, ek işlevsellik eklemek için 'nn' ad alanını genişletir.

+0

Teşekkürler, yani 'nn' ad alanını genişletmek için kodlarda kullanılan anahtar kelimeler var mı? – hunter

+0

'nn' paketine uzantılar olduklarından, onları aynı ad alanına koymak daha temiz ve anlaşılır görünmektedir. Bu da bir şekilde uyumlu olduklarını ve nn.Module'nin tüm uzantıları olduğunu gösterir. – Joost

+0

Bkz. Https://github.com/Element-Research/dpnn/blob/master/Inception.lua#L18 Temel olarak 'module, parent = torch.class (' nn.ModuleName ',' nn.Parent ') ' – Joost

İlgili konular