形状3x3
,5x5
,...の異なる配列(dtype
:np.float32
)をscipy.ndimage.rotateを使用して回転します。入力配列は常にsum <= 1.0
です。ほとんどの場合、合計は1.0から非常に小さいイプシロンを引いたものに等しくなります。これらの配列の最小値は常に>= 0.0
です。配列の値を特定の値/間隔に変更しますか?
私はいつも値がscipy.ndimage.rotate
の結果として[0.0, 1.0]
の間隔にある配列を取得する必要がありましたが、ときどき-1.0755285551056204e-16
のように最小値が非常に小さいことがあります。私はこれが浮動小数点数の不正確さのために現れると思いますか?
しかし、期待された間隔[0.0, 1.0]
に出力配列の値をスカッシュしたいとします(ただし、合計は< = 1.0です)。できるだけ速く(計算時間)これを達成するにはどうすればよいですか?
softmaxのようなものは、配列の値を指数関数的に再スケールして、すでに高い値がさらに高くなっているので、お勧めできません。
返される配列scipy.ndimage.rotate
のsum> 1.0(正の浮動小数点の不正確?!)もありましたので、単にsigmoid functionを使用すると良いとは思いません。合計が< = 1.0であることをチェックする。
小さな負の値は本質的に0です。あなたのマトリックスに 'max(0、value)'を付けても問題ありませんか?合計は1から小さなイプシロンを差し引いたものになります。 – pault
配列の最小値(最小値が<0)の場合はabsを加算し、すべての値を合計で除算すると、すべての値> = 0と合計= 1が得られるはずです。しかし、この目標を達成するための他の方法もあります。あなたの目標は、あなたの目標が何であるかに正確に依存します。 – tom10
@ tom10これは合理的で速い方法のように聞こえる。また、値が互いの関係を失わないことを保証するでしょうか? – daniel451