モデル中の単位への支援(高度)を追加する

評価する

モデルが単位付きパラメータを受け取り,単位付き入力を用いて値を求めるためには,確保する必要がある. evaluate() 方法は単位付き入力値とパラメータを正確に扱うことができる.簡単な算数では箱を開けて使うことができるかもしれません Quantity 多くのNumpy関数はオブジェクトを理解することができる.

モデルのユーザが評価中に提供する入力がパラメータ単位と互換性がない場合、例えば、曖昧なエラーを受信する可能性がある。

UnitsError : Can only apply 'subtract' function to dimensionless quantities
when other argument is not a quantity (unless the latter is all
zero/infinity/nan)

モデル上に複数の属性や属性を設定し,単位を持つモデルの振舞いを調整することができる.これらの属性は、例えば、クラス定義におけるデフォルト値から変更することができる。

class MyModel(Model):
    input_units = {'x': u.deg}
    ...

これらはすべてオプションであることに注意してください。

input_units

入力ユニットのチェックを簡単に追加することができます、方法は追加です input_units 属性や属性。これは戻るべきだ None (制約がないことを表す)またはキーワードが入力名である辞書(例えば、 x 多くの1 Dモデル)では、値は予期される単位であり、パラメータ単位の関数であってもよい。

@property
def input_units(self):
    if self.mean.unit is None:
        return None
    else:
        return {'x': self.mean.unit}

ユーザがその後に与えた値入力単位が正しくない場合、明らかなエラーが表示される。

UnitsError: Units of input 'x', (dimensionless), could not be converted to
required input units of m (length)

入力単位は戻り単位と完全に一致する必要はないことに注意されたい. input_units しかし、彼らにとっては両替できます。他にも、 input_units 簡単な場合には、属性ではなく属性として指定することもできる。

input_units = {'x': u.deg}

return_units

似たような input_units これは,モデルの返り値を単位にマッピングした辞書であるはずである.もし…。 evaluate() 数で呼び出されるが,ユニットなしの値を返すと,ユニットは出力に追加される.返却値が異なる単位を使用する数であれば、変換される return_units それがそうです。

input_units_strict

もし設定が True 指定された正確な単位では、互換単位で伝達される値が変換される input_units それがそうです。

この属性は、入力を指定された単位に変換するために、入力名をブール値にマッピングする辞書であってもよい。

input_units_equivalencies

入力名を等価項リストにマッピングする辞書として設定することができる。

input_units_equivalencies = {'nu': u.spectral()}

_input_units_allow_dimensionless

もし設定が True 通常のスカラーやNumpy配列の値を渡して値を求めることができる. input_units 指定入力は単位を持つべきである.これは evaluate() そしてこのような無次元値をどのように処理するかを決定する.この属性は、無次元値をブール値に渡すことができるように、入力名をブール値にマッピングした辞書であってもよい evaluate() この入力に対して。

適合する.

パラメータを持つモデルが単位を持つパラメータを単位を持つデータに適合させるためには,名前を持つ方法を追加する必要がある. _parameter_units_for_data_units あなたのモデルクラスにあげます。これには2つのパラメータが必要だ input_units そして output_units - input_units データ中の引数を単位とした辞書とし, output_units データ中の従属変数単位を有する辞書として設定される(例えば、簡単な1 Dモデルの場合、 input_units 鍵は一つしかない。 x そして、 output_units 鍵は一つしかない。 y )である。次に、この方法は、モデルおよびデータから単位が削除された場合に、データ上でモデルを使用することができるように、パラメータが変換されるべき単位を各パラメータに提供する辞書を返すべきである。以下の例は、1次元ガウスの実施形態を示す。

def _parameter_units_for_data_units(self, inputs_unit, outputs_unit):
    return {'mean': inputs_unit['x'],
            'stddev': inputs_unit['x'],
            'amplitude': outputs_unit['y']}

この方法により,モデルは単位を持つデータに適用可能である.