問題タブ [automatic-differentiation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - NumPy ufuncs と互換性のある配列のようなクラスを作成するには?
NumPy 配列のように動作するクラスを使用して自動微分を実装しようとしています。をサブクラス化していませんnumpy.ndarray
が、2 つの配列属性が含まれています。1 つは値用で、もう 1 つはヤコビ行列用です。値とヤコビアンの両方を操作するために、すべての操作がオーバーロードされます。しかし、NumPy ufunc (例: np.log
) をカスタム「配列」で動作させるのに問題があります。
問題を説明する次の最小限の例を作成しました。Two
は、NumPy 配列の耐放射線バージョンであり、すべてを 2 回計算し、結果が等しいことを確認します。
インデックス付け、要素ごとの対数、および長さをサポートする必要があります。普通のようにndarray
。要素ごとの対数は、 using を呼び出すと正常に機能x.cos()
しますが、 using を呼び出すと予期しないことを行いnp.cos(x)
ます。
インデックスを作成すると、予想どおり、両方の属性から関連する要素が返されます。
を使用して呼び出された場合、要素ごとの対数は問題なく機能しx.cos()
ます。
ただし、np.log(x)
期待どおりに動作しません。オブジェクトに長さがあることを認識するため、すべての項目を抽出し、それぞれの対数を取り、Two オブジェクト (dtype=object) の配列を返します。
length メソッドがない場合Two
は、問題なく動作します。
要件 (getitem、log、len) を満たすクラスを作成するにはどうすればよいですか? subclassing について調査ndarray
しましたが、それは価値があるよりも複雑なようです。
また、NumPy のソース コードで がアクセスされている場所が見つからなかった x.__len__
ので、それも興味があります。
編集:私は、Python 2.7.11 および NumPy 1.11.0 で miniconda2 を使用しています。
haskell - 最小限の Numeric.AD の例はコンパイルされません
Numeric.AD から次の最小限の例をコンパイルしようとしています。
そして、私はこのエラーに遭遇します:
なぜこれが起こっているのかについての手がかりはありますか?前の例を見ると、これは「平坦化」grad
のタイプであることがわかります。
grad :: (Traversable f, Num a) => (forall s. Reifies s Tape => f (Reverse s a) -> Reverse s a) -> f a -> f a
しかし、実際にはコードでこのようなことをする必要があります。実際、これはコンパイルできない最も最小限の例です。私がやりたいより複雑なことは、次のようなものです:
これは、コンパイルされる型シグネチャを使用した、もう少し複雑なバージョンです。
ただし、最初のバージョンのgrad2
をコードで使用する方法がわかりません。 の処理方法がわからないためですReverse s a
。2 番目のバージョン はgrad2'
、内部コンストラクターを使用しLift
て を作成するため、適切な型を持っていますが、出力勾配がすべて 0 であるため、Reverse s a
内部 (具体的にはパラメーター ) がどのように機能するかを理解していないに違いありません。s
他のコンストラクターReverse
(ここには示されていません) を使用すると、間違ったグラデーションが生成されます。
または、人々がコードを使用したライブラリ/コードの例はありad
ますか? 私のユースケースは非常に一般的なものだと思います。
tensorflow - TensorFlow で n 個のデータ ポイントと k 個のクラスターの間の距離を計算する
X
in shapen
によるデータ ポイントの行列です。in shapeによるクラスタ ポイントの行列です。データポイント と各クラスター間の最小距離は、次のように計算できます。d
W
k
d
i
テンソルフローグラフ法で、すべてのデータポイントと各クラスターの間の距離をどのように計算できますか? for ループが頭に浮かびますが、私が理解している限り、そのような機能はテンソルフローに存在しません。