パスワードを忘れた? アカウント作成
13284134 journal
日記

tuneoの日記: 線形代数に不信感 3

日記 by tuneo

もちろん線形代数は大事ですよ?でもこんなトンパチなことを書かれたら眉に唾を付けたくなるのは人情ってもんじゃないですか。

一発目のサンプルコードは目を覆わんばかりにひどい。2つのシーケンスの要素同士の積からなる新しいシーケンス(アダマール積っていうんだっけ?)を作るには、というお題でPythonのべた書きとnumpy利用を比較して線形代数のメリットを示してみせたいらしいのだが、何すかこの汚いコードは。

# 2つの配列を掛ける
x = [1,2,3]
y = [2,3,4]
product = []
for i in range(len(x)):
    product.append(x[i]*y[i])
# 線形代数バージョン
x = numpy.array([1,2,3])
y = numpy.array([2,3,4])
x * y

しょっぱなのコメントの「配列」という言葉にイラっとする(上記のコードで使われたのは「配列」ではなく「リスト」である。Pythonにはリスト以外に「配列」を提供するarrayってモジュールがあるので、区別はきちんとしましょう)。そしてシーケンスsの全要素を頭からなめるのにfor i in range(len(s)): s[i]なんちゃらと書く連中は滅ぼされなければならない。おまけに、こんなのリスト内包表記とzip()を使えば[_x * _y for _x, _y in zip(x, y)]一発ではないか。

もう一つ追い打ちをかけておくと、アダマール積ってのはどういう「線形代数」の問題を解決するのか?という解説がないので「そういう計算をするのにnumpyってのが使えるんですね、すごーい!たーのしー!……で、それが何?」と思うのは人として当然だと思う。

そしてとどめに上記の例でnumpyを使うメリットは「速い」ことなんだそうな。もう言葉がない。「numpy使うとアダマール積が速いんだぞ線形代数はすごいだろ!」とドヤリングされても、この文章がターゲットとしている「初学者」は何が何やらさっぱりだと思うんだけど。

この議論は、tuneo (2938)によって テキとトモのテキ禁止として作成されたが、今となっては 新たにコメントを付けることはできません。
  • by FLCN2 (47460) on 2017年05月18日 9時26分 (#3212701) 日記

    この人の線形代数の定義が不思議。
    numpyのことを線形代数と言っているのですね。
    ディープラーニング業界では本当に一般的なんでしょうか。

    • 深層学習はトレンディ(死語)な分野ですから参入する人たちもピンキリなんでしょう。
      こういうある意味凄い人は稀であってほしいのですが……。

      親コメント
      • by FLCN2 (47460) on 2017年05月20日 7時17分 (#3214066) 日記

        pythonはプログラミング初心者に向いていますし、ライブラリも豊富なので、ユーザーの裾野は広いと思いますが、その分表層的な知識だけでやっている人も多いのでしょうかね。
        かく言う私も文法はめちゃくちゃだし古典的なニューラルネットワークしか実装したことがないので、人のことは全く言えないのですが。

        親コメント
typodupeerror

Stableって古いって意味だっけ? -- Debian初級

読み込み中...