在 Theano 中计算裁剪后的饱和值
Calculate saturated values after clipping in Theano
我正在使用 theano.clip 来限制我的 numpy 数组的值。例如
array = np.array([[ 1., -1., -3., 1., 1.],
[ 3., -4., -5., 0., -1.],
[ 8., -3., -7., -3., -3.],
[ 8., 2., -2., -3., -3.],
[ 7., 0., 0., 1., 0.]])
max_val = np.array([2.0]).astype('float32')
T.clip(array, -max_val, max_val).eval()
输出:
array([[ 1., -1., -2., 1., 1.],
[ 2., -2., -2., 0., -1.],
[ 2., -2., -2., -2., -2.],
[ 2., 2., -2., -2., -2.],
[ 2., 0., 0., 1., 0.]])
我想计算裁剪操作后裁剪了多少个值。可能吗?
如果你的数组名称是a
,你可以
np.logical_or(a >= 1, a <= -1).sum()
您不会对元素进行两次计数,因为 - max_val < max_val
。但是,这需要 a
.
两遍
这是一种方法 np.count_nonzero
掩码值超出通过与最小和最大限制进行比较计算的限制 -
np.count_nonzero((array < -max_val) | (array > max_val))
np.count_nonzero
是为了提高性能,因为它在 mask/boolean 数组上运行以获得总计数 .
或者,使用绝对值作为最小和最大限制的较短版本,因为在这种情况下,它们只是同一限制数的负值和正值 -
np.count_nonzero(np.abs(array) > max_val)
样本运行-
In [267]: array
Out[267]:
array([[ 1., -1., -3., 1., 1.],
[ 3., -4., -5., 0., -1.],
[ 8., -3., -7., -3., -3.],
[ 8., 2., -2., -3., -3.],
[ 7., 0., 0., 1., 0.]])
In [268]: max_val = np.array([2.0]).astype('float32')
In [269]: np.count_nonzero((array < -max_val) | (array > max_val))
Out[269]: 13
In [270]: np.count_nonzero(np.abs(array) > max_val)
Out[270]: 13
我正在使用 theano.clip 来限制我的 numpy 数组的值。例如
array = np.array([[ 1., -1., -3., 1., 1.],
[ 3., -4., -5., 0., -1.],
[ 8., -3., -7., -3., -3.],
[ 8., 2., -2., -3., -3.],
[ 7., 0., 0., 1., 0.]])
max_val = np.array([2.0]).astype('float32')
T.clip(array, -max_val, max_val).eval()
输出:
array([[ 1., -1., -2., 1., 1.],
[ 2., -2., -2., 0., -1.],
[ 2., -2., -2., -2., -2.],
[ 2., 2., -2., -2., -2.],
[ 2., 0., 0., 1., 0.]])
我想计算裁剪操作后裁剪了多少个值。可能吗?
如果你的数组名称是a
,你可以
np.logical_or(a >= 1, a <= -1).sum()
您不会对元素进行两次计数,因为 - max_val < max_val
。但是,这需要 a
.
这是一种方法 np.count_nonzero
掩码值超出通过与最小和最大限制进行比较计算的限制 -
np.count_nonzero((array < -max_val) | (array > max_val))
np.count_nonzero
是为了提高性能,因为它在 mask/boolean 数组上运行以获得总计数
或者,使用绝对值作为最小和最大限制的较短版本,因为在这种情况下,它们只是同一限制数的负值和正值 -
np.count_nonzero(np.abs(array) > max_val)
样本运行-
In [267]: array
Out[267]:
array([[ 1., -1., -3., 1., 1.],
[ 3., -4., -5., 0., -1.],
[ 8., -3., -7., -3., -3.],
[ 8., 2., -2., -3., -3.],
[ 7., 0., 0., 1., 0.]])
In [268]: max_val = np.array([2.0]).astype('float32')
In [269]: np.count_nonzero((array < -max_val) | (array > max_val))
Out[269]: 13
In [270]: np.count_nonzero(np.abs(array) > max_val)
Out[270]: 13