線形動径基底回帰をするときに、基底関数のリストとして、
bases = [lambda x: (torch.exp(-((x[..., 0] - x_mean)/std_x) ** 2 - ((x[..., 1] - dx_mean)/std_dx) ** 2))
for x_mean in np.linspace(start=-1., stop=1., num=10)
for dx_mean in np.linspace(start=-1., stop=1., num=10)
]
と書いたのだがすべて同じ関数のリストになってしまった。
シンプルな例を考える
f = [lambda x: print(i) for i in range(4)]
とすると、ラムダ文の実行時での変数$i$の値が使用され、
任意のnに対して、
f[n](10) = 3
となってしまう。
定義の時の変数値を使うためには、
f = [lambda x, s=i: print(s) for i in range(4)]
このようにデフォルト引数を使用すればよい