2017-02-10 8 views

答えて

2

彼らはedward/models/random_variables.pyで定義されているところを私に伝えることができgithub

誰でNormalの宣言を見つけることができませんでした。

あなたはこのようなNormalクラスをインポート:

from edward.models.random_variables import * 

たちはthis codeを見つけるedward/models/random_variables.pyで探し:

from edward.models.random_variable import RandomVariable as _RandomVariable 
from tensorflow.contrib import distributions as _distributions 

# Automatically generate random variable classes from classes in 
# tf.contrib.distributions. 
_globals = globals() 
for _name in sorted(dir(_distributions)): 
    _candidate = getattr(_distributions, _name) 
    if (_inspect.isclass(_candidate) and 
      _candidate != _distributions.Distribution and 
      issubclass(_candidate, _distributions.Distribution)): 

    # to use _candidate's docstring, must write a new __init__ method 
    def __init__(self, *args, **kwargs): 
     _RandomVariable.__init__(self, *args, **kwargs) 
    __init__.__doc__ = _candidate.__init__.__doc__ 
    _params = {'__doc__': _candidate.__doc__, 
       '__init__': __init__} 
    _globals[_name] = type(_name, (_RandomVariable, _candidate), _params) 

del _candidate 

​​

これは、この行を有し、edward/models/__init__.pyで探して示唆を

これはtensorflow.contrib.distributionsモジュールは、tensorflow.contrib.distributions.Distributionから派生したクラスを探している(例えば、モジュールの__file__メンバ、または基底クラスDistribution)。それぞれのために、それは(のみ生成されたドキュメントに影響を与える)ハッキングのビットは、このキーの行を実行し:

_globals[_name] = type(_name, (_RandomVariable, _candidate), _params) 

type()組み込み関数は、新しいタイプの、すなわち新しいクラスを宣言を作成します。 2番目のパラメータは基底クラスのリストです。ここではedwardのRandomVariableクラスとTensorFlowランダム変数クラスです。以前は_globalsglobals()と定義していました。これはモジュールの変数の辞書を返す組み込み関数です。したがって、あなたが興味を持っている場合には、上記の行は、次のと同等です。

from edward.models.random_variable import RandomVariable as EdRandVar 
from tensorflow.contrib.distributions import Normal as TfNormal 
Normal = type("Normal", (EdRandVar, TfNormal), {...}) 

今度はこれに相当する(あなたはドキュメンテーション文字列のものを無視した場合):

from edward.models.random_variable import RandomVariable as EdRandVar 
from tensorflow.contrib.distributions import Normal as TfNormal 
class Normal(EdRandVar, TfNormal): 
    pass 
関連する問題