問題タブ [theano]
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.
numpy - numpy で行の長さが異なる行列
長さの異なる行を持つ numpy で行列 (たとえばm )を定義する方法はありますが、 mは 2 次元のまま (iemndim = 2) になりますか?
たとえば、m = numpy.array([[1,2,3], [4,5]])と定義すると、m.ndim = 1 となります。なぜこうなるのかは理解できますが、あるなら興味があります。 numpy をだましてmを 2D として表示させる方法。行が同じサイズになるようにダミー値をパディングするというアイデアもありますが、そのような行列がたくさんあり、スペースを取りすぎてしまいます。mが 2D であることが本当に必要な理由は、Theano で作業していて、 mの値が与えられるテンソルが2D 値を期待しているためです。
math - Python 数学関数を float32 で動作させることを再検討する
Python 操作を float32 で強制的に動作させる方法を認識しています: How to force python float operation on float32 rather than float64
しかし、組み込み関数を強制的に float32 で動作させることについての質問や回答はありません。math.sqrt や numpy.sqrt などの組み込みの数学関数または numpy 関数を float32 で動作させるにはどうすればよいかを尋ねたかったのです。参考までに、私はまだ質問にコメントできませんでした。
theano では、次のように、sqrt などの関数を float32 または float64 で動作するように簡単に構成できます。
結果は次のとおりです。
今、私は math.sqrt と numpy.sqrt に次のように同じことを強制しようとしました:
しかし、結果はまだ float64 のようです (theano.config.floatX='float64' を設定した場合、結果は同じ、つまり 3.87298334621 になることを確認しました):
math.sqrt、numpy.sqrt を float32 で強制的に動作させる方法を知りたいですか?
python - Theano: コンパイル済み関数内のインデックス作成 (GPU)
Theano では、更新する必要があるメモリ領域とその方法を定義するだけで、グラフィックス カード DRAM のメモリを更新できるため、次のことが可能かどうか疑問に思っていました (そうあるべきです)。
最初の列が開始値で初期化される2x5のランダムに初期化されたマトリックスがあります。前の列に依存し、任意の計算に基づいて次の列を更新する関数を書きたいと思います。
このコードはそれを非常によく説明していると思います:
注:このコードは機能していません。これは単なる例です。
私の望ましい出力は次のようになります。
しかし、代わりに私は得る
ここで誰か助けてくれませんか?
うわー:この質問は、Google の検索結果のトップ 4 で既に「Theano indexing gpu」について質問してから 9 分後のことです。O_o
theano - Theano の型付きリスト
次の機械翻訳の問題を考えてみましょう。s
をソース文、t
ターゲット文とする。両方の文は、概念的にインデックスのリストとして表されます。インデックスは、関連する辞書内の単語の位置に対応します。例:
s
とt
は必ずしも同じ長さではないことに注意してください。S
とT
をそのようなインスタンスのセットとします。つまり、対訳コーパスです。例:
s
すべてのS
が同じ長さであるとは限らないことに注意してください。つまり、文にはさまざまな数の単語があります。
私は Theano で機械翻訳システムを実装しています。最初の設計上の決定は、 と に使用するデータ構造の種類S
ですT
。Matrices with different row lengths in numpyに投稿された回答の 1 つから、型付きリストが可変長テンソルを格納するための優れたソリューションであることを学びました。
ただし、コードが非常に複雑になることに気付きました。一例を挙げましょう。2 つの型付きリストがy
ありp_y_given_x
、負の損失可能性を計算することを目的としているとします。それらが通常のテンソルである場合、次のような単純なステートメントで十分です。
ただしcategorical_crossentropy
、テンソルにのみ適用できるため、型付きリストの場合は、それらを反復処理して、関数を各要素に個別に適用する必要があります。
コードがますます乱雑になるだけでなく、これらの問題が伝播します。たとえば、損失の勾配を計算したい場合、次は機能しなくなります。
なぜうまくいかないのか、正確にはわかりません。のタイプに関係していると確信していますが、loss
それを機能させる方法をこれ以上調査することに興味はありません。混乱は指数関数的に増大しており、私が知りたいのは、型付きリストを間違った方法で使用していないか、それともまだ十分にサポートされていないためにそれらをあきらめる時が来たかどうかを知ることです.
python - シンボリック式/ステートメントの連結/作成
プログラムで次のようなものを作成したい:
a = (_vec, T.set_subtensor(_vec[0], _init[0]))[1]
そのステートメント全体がそうです。これはまだ何もしていません。次に、b = (a, T.set_subtensor( a[1], a[0] * 2))[1]
依存しているものがa
あり、別のステートメント自体があります。これは まで続きvec_update
ます。見た目が悪いことはわかっていますが、次のようなベクトルcol[n] = col[n-1] * 2
をcol[0] = 1
返すように、ベクトルの列を更新するだけです。
今、これを何千回もやりたいと想像してみてください..したがって、簡単なパターンに従うので、そのようなステートメントを生成できるかどうか疑問に思っています。
これらの「連結された」ステートメントは、
これは、それらがコンパイルされているときでありCUDA-code
、
すべてを実行します。
python - インデックスのリストからワンホット マトリックスへ
Theano でインデックスのベクトルを 0 と 1 の行列に変換するための最良の (エレガントで効率的な) 方法は何ですか?
例:
theano - Theano SDE の例
ここにあるTheanoを使用してGPUでSDEを解決する例を試しています
GpuDimShuffle エラーで立ち往生していますが、どのディムも一致していません...
収量:
TypeError: ('ノードのコンパイル中に次のエラーが発生しました', Rebroadcast{0(GpuDimShuffle{x,0}.0), '\n', 'super(type, obj): obj は型のインスタンスまたはサブタイプでなければなりません')
私は Theano 0.6.0 を使用しています
theano - Theano は変数分割をサポートしていますか?
私の Theano プログラムでは、テンソル行列を 2 つの部分に分割し、それぞれが誤差関数に異なる寄与をするようにしたいと考えています。自動微分がこれをサポートしているかどうか、誰にも教えてもらえますか?
たとえば、テンソル行列変数 M を M1=M[:300,] と M2=M[300:,] に分割したい場合、コスト関数は 0.5* M1 * w + 0.8*M2 として定義されます。 * w. T.grad(cost,w) でグラデーションを取得することはまだ可能ですか?
または、より具体的には、総コストへの貢献度が異なるさまざまな機能を持つオートエンコーダーを構築したいと考えています。
私の質問に答えてくれてありがとう。