C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 計算表現の二つの方法について


(過去ログ 172 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■99350 / inTopicNo.1)  計算表現の二つの方法について
  
□投稿者/ 金井 (1回)-(2022/03/20(Sun) 03:02:34)

分類:[.NET 全般] 

変数オブジェクトに関する計算について、オブジェクト指向の言語には二つのやり方があります。
外部演算子(or 関数)を利用するやり方と、そのオブジェクト自身が持っている計算子または関数を利用する事。

(C++とPythonと似ています)


例えば、下記のような計算(Xはtensor object)
Yの結果同じですが、それぞれの計算表現のメリットとデメリットは何でしょうか。

Y = X.mul(0.5).exp_()
Y = torch.exp(0.5 * X)



引用返信 編集キー/
■99351 / inTopicNo.2)  Re[1]: 計算表現の二つの方法について
□投稿者/ カイト (1回)-(2022/03/20(Sun) 08:56:31)
インスタンスメソッドは中置記法に似てて見慣れた数式に近い
クラスメソッドはポーランド記法に似ててオブジェクトを作らなくて良いから速そうな気がする
検証はしてない気がするだけ
引用返信 編集キー/
■99352 / inTopicNo.3)  Re[1]: 計算表現の二つの方法について
□投稿者/ とっちゃん (756回)-(2022/03/20(Sun) 13:58:05)
No99350 (金井 さん) に返信
> 例えば、下記のような計算(Xはtensor object)
> Yの結果同じですが、それぞれの計算表現のメリットとデメリットは何でしょうか。
>
> Y = X.mul(0.5).exp_()
> Y = torch.exp(0.5 * X)
>
結論から言えば、好みです(本当に)。

流行的なものはあると思いますが、好きなほうを選べばいいと思います。

メンバー間でもめるなら共通化はしてもいいと思いますし、ほかの箇所でどういう記述しているかで
寄せるという方針でもいいと思います。

ばらしたほうがわかりやすいんだよ!ということもあると思うので

X05 = X * 0.5
Y = torch.exp( X05 )

と書いてもいいと思いますよ。

引用返信 編集キー/
■99355 / inTopicNo.4)  Re[2]: 計算表現の二つの方法について
□投稿者/ 金井 (2回)-(2022/03/21(Mon) 09:16:23)

お返答ありがとうございます。


>クラスメソッドはポーランド記法に似ててオブジェクトを作らなくて良いから速そうな気がする

そうですね。データは内臓しているので、外部メソッドに渡すコストかからないし、
これ以外にobject自前のメソッドを利用することで、呼び出す速度も速いでしょう。


>メンバー間でもめるなら共通化はしてもいいと思いますし、ほかの箇所でどういう記述しているかで
寄せるという方針でもいいと思います。

メンテナンス上大事な話ですね。


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -