TensorFlow中的类型转换错误

时间:2018-07-09 02:36:53

标签: python tensorflow type-conversion

假设我正在一些看起来像这样的训练数据上实现线性层  enter image description here

以下代码

import tensorflow as tf
import numpy as np

weights = tf.Variable(np.random.uniform(0.0, 1.0, 3))
bias = tf.Variable(0.0)
trainingData = np.array(np.arange(15).astype(float).reshape(3,5))
output = tf.expand_dims(weights, 0) @ trainingData + bias

产生

enter image description here

这可以通过改为最后一行来解决

tf.cast(tf.expand_dims(weights, 0) @ trainingData, tf.float32) + bias

好的,所以它不喜欢在float32_ref上添加float64,,但是在float32_ref上添加float32.是可以的,但是我一定做错了,因为我所做的事情非常简单,并且会引发错误。 (我是TensorFlow的新手。)我理解为什么它不喜欢我写的东西,但是我犯了什么基本错误导致了这个问题?

我正在寻找这样的答案:“哦,永远不要使用0.0这样的浮点数来初始化偏差,因为...”“那将更普遍地导致类型转换错误。”

1 个答案:

答案 0 :(得分:1)

  1. 哦,除非您有充分的理由,否则永远不要使用tf.Variable。您应该改用tf.get_variable来避免issues

  2. 哦,除非您有充分的理由,否则永远不要使用float64作为数据类型。 NumPy使用float64作为默认值,因此您应该编写类似

    的内容
    W = tf.get_variable("w", initializer=np.random.randn().astype(np.float32))