如何将 tf.int64 转换为 tf.float32?
How to convert tf.int64 to tf.float32?
我试过了:
test_image = tf.convert_to_tensor(img, dtype=tf.float32)
然后出现如下错误:
ValueError: Tensor conversion requested dtype float32 for Tensor with dtype int64: 'Tensor("test/ArgMax:0", shape=TensorShape([Dimension(None)]), dtype=int64)'
糟糕,我在 API...
中找到了函数
tf.to_float(x, name='ToFloat')
您通常可以使用:
tf.cast(my_tensor, tf.float32)
将 tf.float32 替换为您想要的类型。
Edit:至少目前看来,tf.cast
不会转换为无符号数据类型(例如 tf.uint8
)。要解决此问题,您可以转换为带符号的等价物并使用 tf.bitcast
来完成。例如
tf.bitcast(tf.cast(my_tensor, tf.int8), tf.uint8)
您可以使用 tf.cast(x, tf.float32)
or tf.to_float(x)
,两者都转换为 float32。
示例:
sess = tf.Session()
# Create an integer tensor.
tensor = tf.convert_to_tensor(np.array([0, 1, 2, 3, 4]), dtype=tf.int64)
sess.run(tensor)
# array([0, 1, 2, 3, 4])
# Use tf.cast()
tensor_float = tf.cast(tensor, tf.float32)
sess.run(tensor_float)
# array([ 0., 1., 2., 3., 4.], dtype=float32)
# Use tf.to_float() to cast to float32
tensor_float = tf.to_float(tensor)
sess.run(tensor_float)
# array([ 0., 1., 2., 3., 4.], dtype=float32)
image
类型转换,您可以使用 tf.image.convert_image_dtype()
将图像范围 [0 255]
转换为 [0 1]
:
img_uint8 = tf.constant([1,2,3], dtype=tf.uint8)
img_float = tf.image.convert_image_dtype(img_uint8, dtype=tf.float32)
with tf.Session() as sess:
_img= sess.run([img_float])
print(_img, _img.dtype)
输出:
[0.00392157 0.00784314 0.01176471] float32
如果您只想转换类型并保持值范围,请使用 tf.cast
或 tf.to_float
作为@Whosebuguser2010 和@Mark McDonald 回答
如果您的数据实际上是 Pandas 数据框,我们可以先使用以下方法检查数据类型:
print(dataset.dtypes)
将所有条目转换为float32
(例如),
# Typecast
dataset = dataset.astype('float32')
#print them to verify
print(dataset.dtypes)
我试过了:
test_image = tf.convert_to_tensor(img, dtype=tf.float32)
然后出现如下错误:
ValueError: Tensor conversion requested dtype float32 for Tensor with dtype int64: 'Tensor("test/ArgMax:0", shape=TensorShape([Dimension(None)]), dtype=int64)'
糟糕,我在 API...
中找到了函数 tf.to_float(x, name='ToFloat')
您通常可以使用:
tf.cast(my_tensor, tf.float32)
将 tf.float32 替换为您想要的类型。
Edit:至少目前看来,tf.cast
不会转换为无符号数据类型(例如 tf.uint8
)。要解决此问题,您可以转换为带符号的等价物并使用 tf.bitcast
来完成。例如
tf.bitcast(tf.cast(my_tensor, tf.int8), tf.uint8)
您可以使用 tf.cast(x, tf.float32)
or tf.to_float(x)
,两者都转换为 float32。
示例:
sess = tf.Session()
# Create an integer tensor.
tensor = tf.convert_to_tensor(np.array([0, 1, 2, 3, 4]), dtype=tf.int64)
sess.run(tensor)
# array([0, 1, 2, 3, 4])
# Use tf.cast()
tensor_float = tf.cast(tensor, tf.float32)
sess.run(tensor_float)
# array([ 0., 1., 2., 3., 4.], dtype=float32)
# Use tf.to_float() to cast to float32
tensor_float = tf.to_float(tensor)
sess.run(tensor_float)
# array([ 0., 1., 2., 3., 4.], dtype=float32)
image
类型转换,您可以使用 tf.image.convert_image_dtype()
将图像范围 [0 255]
转换为 [0 1]
:
img_uint8 = tf.constant([1,2,3], dtype=tf.uint8)
img_float = tf.image.convert_image_dtype(img_uint8, dtype=tf.float32)
with tf.Session() as sess:
_img= sess.run([img_float])
print(_img, _img.dtype)
输出:
[0.00392157 0.00784314 0.01176471] float32
如果您只想转换类型并保持值范围,请使用 tf.cast
或 tf.to_float
作为@Whosebuguser2010 和@Mark McDonald 回答
如果您的数据实际上是 Pandas 数据框,我们可以先使用以下方法检查数据类型:
print(dataset.dtypes)
将所有条目转换为float32
(例如),
# Typecast
dataset = dataset.astype('float32')
#print them to verify
print(dataset.dtypes)