タグ

SparseMatrixに関するxefのブックマーク (4)

  • scipy.sparseの内部データ構造 – はむかず!

    前回の記事で予告した記事が遅くなってしまった。申し訳ない。 ここでは、Pythonの疎行列ライブラリscipy.sparseについて、データの内部構造を説明する。内部構造を知らずにブラックボックスとして使いたい場合は前回の記事を参照のこと。 はじめに(あるいは前回記事のまとめのまとめ) scipy.sparseで疎行列を表すクラスは主に以下のものがある(他にもあるが、ここではとりあげない。これだけ知ってれば大体のことはできる。) lil_matrix csr_matrix csc_matrix 通常は、lil_matrixを用意してそこに値を詰めてから、csr_matrixまたはcsc_matrixに変換してから計算を行う。csr_matrixとcsc_matrixのどちらを使うかは以下のことから判断する。 演算はcsr同士またはcsc同士が高速 csrは行を取り出すのが高速 cscは列を

  • Pythonの疎行列ライブラリscipy.sparseの基本 – はむかず!

    今回は珍しく(?)初心者フレンドリーに書こうと思う。先日のPyCon JPでの発表で、Pythonで使える疎行列のライブラリ「scipy.sparse」について反響があったので、改めてここで使い方の基をまとめてみることとする。そもそも、便利で使い方もそれほど難しくないのに、日語の情報がほとんどないようなので敬遠されていることもあるかもしれない。ここでは、使い方の基を解説する。 基: 疎行列とは? 要素のほとんどが0であるような行列を疎行列と呼ぶ。そうではない普通の行列を、区別したいときには密行列と呼ぶ。疎行列では、非ゼロ要素だけを覚えておけば良いので、メモリ、計算時間ともに大幅な節約になる。特に非ゼロ要素の割合が小さい場合は、その節約は大きくなる。 特に機械学習の分野だと、計算過程で大規模な疎行列が必要になることがよくある。 使い方 scipy.sparseには、疎行列を表すクラス

  • scipy.sparse: 疎行列の要素へ関数の一括適用 – はむかず!

    くだらないものばかり作ってないでたまには技術ネタを書いてみようと思う。 Python(とくにscipy.sparse)でx=0でf(x)=0となるようなユニバーサル関数fを疎行列のそれぞれの要素に作用させるにはどうすればいいだろうか。 x=0で0になるという点が重要で、その条件を満たす関数ならばもとの行列のsparsityをそのまま保存できる。つまり結果も疎行列になるはずだ。 Pythonにはユニバーサル関数という呼ばれる関数群があって、それは密行列については便利な機能で、例えば、密行列のすべての要素にtanhを作用させようとすると、次のようなコードで計算できる。 import numpy as np a=np.ones((3,3)) print a b=np.tanh(a) print b つまりユニバーサル関数は行列に作用させると各要素に作用する。以前に書いたfor文を書いたら負けとい

  • 疎行列の格納方式メモ - Negative/Positive Thinking

    はじめに 巨大だけどほとんどの要素がゼロであるような疎行列は、そのまま保持するより、要素がゼロじゃないところだけをうまく保持する事でメモリや計算量を減らせたりする。 扱う行列のタイプによって、効率のよい形式がいくつかあるようなので代表的なものをメモしておく。 Coodinate(COO) Format 非ゼロ要素の(row indices, column indices, value)を要素数分持たせる形式 非ゼロ要素が散らばっている場合に有利 0 4 0 0 2 0 0 0 1 を row 0 1 2 column 1 1 2 value 4 2 1 のように保持する。 compressed sparse row(CSR) Format / compressed sparse column(CSC) Format Coodinate Formatにおいて、左から右、上から下へ順番に要素を

    疎行列の格納方式メモ - Negative/Positive Thinking
  • 1