我正在使用小数字tensorflow,这有时会导致数值不稳定.
我想提高结果的精确度,或者至少确定我的结果的界限.
下面的代码显示了一个数字错误的具体示例(它输出nan而不是0.0,因为float64不够精确地处理1+eps/2):
import numpy as np
import tensorflow as tf
# setup
eps=np.finfo(np.float64).eps
v=eps/2
x_init=np.array([v,1.0,-1.0],dtype=np.float64)
x=tf.get_variable("x", initializer=tf.constant(x_init))
square=tf.reduce_sum(x)
root=tf.sqrt(square-v)
# run
with tf.Session() as session:
init = tf.global_variables_initializer()
session.run(init)
ret=session.run(root)
print(ret)
Run Code Online (Sandbox Code Playgroud)
我假设没有办法增加tensorflow中值的精度.但也许有可能设置舍入模式,就像在C++中使用std::fesetround(FE_UPWARD)?然后,我可以强制张量流总是向上舍入,这将确保我采用非负数的平方根.
我尝试了什么:我试图按照这个问题概述如何设置python/numpy的舍入模式.但是,这似乎不起作用,因为以下代码仍然打印nan:
import numpy as np
import tensorflow as tf
import ctypes
FE_TONEAREST = 0x0000 # these constants may be system-specific
FE_DOWNWARD = 0x0400
FE_UPWARD = 0x0800 …Run Code Online (Sandbox Code Playgroud) 我想将PIL图像的信息存储在键值存储中。为此,我对图像进行哈希处理并将哈希值用作键。
我一直在使用以下代码来计算哈希值:
def hash(img):
return hashlib.md5(img.tobytes()).hexdigest()
Run Code Online (Sandbox Code Playgroud)
但这似乎不稳定。我还没有弄清楚为什么,但是对于不同机器上的同一图像,我得到了不同的哈希值。
有没有一种简单的散列图像的方法,该方法仅取决于图像本身(而不取决于时间戳,系统体系结构等)?
请注意,我不需要类似的图像来获得类似/相同的哈希,就像在图像哈希中一样。实际上,我希望不同的图像具有不同的哈希,例如,更改图像的亮度应更改其哈希。
我正在使用以下 python 代码旋转图像:
from PIL import Image
img = Image.open('banana.jpg')
rotated = img.rotate(10)
rotated.save('banana-rotated.jpg')
Run Code Online (Sandbox Code Playgroud)
这进行了以下转换:
如您所见,背景是黑色的。这个问题询问如何用特定颜色填充背景。但是,我想用图像的颜色填充背景。因为我需要旋转很多图像,所以我不想将背景设置为固定颜色。
有没有办法在边缘扩展图像,并从图像中推断出颜色?理想情况下,如果图像没有统一的背景,这也适用。