Closed o-jill closed 1 year ago
処理順
むしろnosimdでbitをシフトしていない気がするのでnosimdが間違っている説。
bitboardのnosimdとbyteboardのnosimdが同じだったのでやっぱりbitboardのsimdが間違っている説。
simdありなしでxyのindexが間違っている説
"h/H/h/H/h/H/h/H w" でなんかわかったりしないか? "aAaAaAaA/aAaAaAaA/aAaAaAaA/aAaAaAaA/aAaAaAaA/aAaAaAaA/aAaAaAaA/aAaAaAaA b"とか。
やっぱりnosimdが間違ってた。 72b72df
cargo test
に今回やったチェックを入れたほうが良いのかな?
テストを追加した。 cbbbaf9
デバッグコンパイルだと配列のメモリアライメントが16byte-alignedにならないのでcargo test --release
でやるようにした。 8a8ee3c
NNの規模を大きくする前に計算が正しいか確認をしていたら変なところを見つけた。
backwardv3bb()
(比較用にNoSIMD処理を抜き出し) とbackwardv3bb_simd()
(比較用にSIMD処理を抜き出し)を作って更新後のweightを文字列で比較した。 奇数番目の重みの値がことごとく違う。eta=0.001で0.0008ぐらい値が違う感じ。更新できていないのか、それともプラスマイナスが違うのか。 奇数番目が違うのは使った盤面が市松模様だからかと思ったら市松模様だとh1とa2が同じ石になるはずなので盤面が問題ではなさそう。そもそも学習結果は盤面に左右されてはいけない。 とにかくなんかやらかしている。34 で発覚した。