Queue.雑記( )

プログラミングと雑記

息苦しくするのが好きなのか

www.itmedia.co.jp

パクツイのリツイートが権利侵害という判決
Twitter利用者に求められるのは2点

  • 無断転載ツイートをしないこと
  • 無断転載でないかを確認した上でリツイートすること

まあ、前者はいいんじゃないか
デジタル化されたコンテンツは管理しきれないと思うけど

問題は後者で、
確認の手間を強いられることになる
リツイートが少なくなりそうだな

あと、これは写真に対してだけど、
将来的には文章も含まれそう
どんどんネットが息苦しくなっていくな

これ、匿名システムが発展してくるんじゃないか?

追記

numpyの話

例えば距離の計算をする

intf = numpy.frompyfunc(lambda x,: x-int(x), 1, 1)
f = numpy.frompyfunc(lambda x, y: numpy.sqrt(x**2+y**2), 2, 1)
X, Y = load_many_data()
# X, Y : shape = (10000, )
result = f(intf(X), intf(Y))

numpy.frompyfuncで配列要素全体に対して適応させることのできる関数をつくることができる

で、
簡潔だし、
これの速度が最速だと思っていたが、
どうもこれは遅いらしい

今のところの最速はこれ

X, Y = load_many_data()
X, Y = X-X.astype('int'), Y-Y.astype('int')
result = numpy.sqrt(X*X+Y*Y)

numpyつかって最速演算をする上で
注意するところは、

  • 可能な限り標準の組み込み関数は使わない
  • numpyで実装されている関数を使う
  • 配列演算で手順を組む

たぶんだけど、einsumとか使うともっと速度だせるので、
そういう手順を組むのが良いのだと思う

配列演算で、というのは、
要素1つに対する処理を適応させる流れではなく、
要素の位置同士を利用して演算をしていく

この場合は単純で、
要素を取り出し、二乗して、足し合わせて、平方根をとる、を繰り返すよりも、
同じ位置の要素を掛け合わせて、同じ位置の要素を足し合わせて、要素全てに平方根をとるほうが早い
一見同じように見えて、内部の処理はだいぶ違う

C的な考え方じゃなくて、CUDA的な考え方?になるのか?
配列そろえて、どーんって計算して、動かして、どーんって計算する
それが最速の手順っぽい
できたときが気持ちイイ