Python TensorFlow中的类型转换错误

Python TensorFlow中的类型转换错误,python,tensorflow,type-conversion,Python,Tensorflow,Type Conversion,假设我在一些训练数据上实现一个线性层 下面的代码 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)

假设我在一些训练数据上实现一个线性层

下面的代码

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
产生

这可以通过将最后一行改为

tf.cast(tf.expand_dims(weights, 0) @ trainingData, tf.float32) + bias
好的,所以它不喜欢将
float32\u ref
添加到
float64,
但是将
float32\u ref
添加到
float32也没关系。
但是我一定是做错了什么,因为我做的事情非常简单,而且它抛出了一个错误。(我是TensorFlow的新手。)我理解它为什么不喜欢我写的东西,但我犯了什么基本错误导致了这个问题

我在寻找一个答案,比如“哦,你永远不应该用0.0这样的浮点来初始化bias,因为……”这将导致更普遍的类型转换错误

  • 哦,除非有很好的理由,否则永远不要使用
    tf.Variable
    。您应该使用
    tf.get_variable
    来避免

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

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

  • 所以不要使用float64,因为这样的事情会发生吗?还有其他不使用float64的原因吗?看看单精度与双精度的tera触发器。也看到这个。