python dtype=float 是32还是64_张量转换为dtype float32的Tensor请求了dtype float64

在尝试计算皮尔逊相关系数时遇到了错误:Tensorflow的streaming_pearson_correlation函数请求将数据类型从float32转换为float64,导致ValueError。问题出在将Tensor转换为float64时,而原始Tensor的数据类型是float32。
摘要由CSDN通过智能技术生成

我有个错误:ValueError: Tensor conversion requested dtype float64 for Tensor with dtype float32: 'Tensor("pearson_r/covariance/Cast:0", shape=(), dtype=float32)'

我的代码如下:

^{pr2}$

完整的错误消息是:---------------------------------------------------------------------------

ValueError Traceback (most recent call last)

in

274 #testLabels = tf.convert_to_tensor(array(testLabels), dtype=tf.float64)

275

--> 276 corr=correlation_coefficient(ynew, array(testLabels))

277 print('Test Correlation: %f' % (cor*100))

278

in correlation_coefficient(y_true, y_pred)

45

46 def correlation_coefficient(y_true, y_pred):

---> 47 return tf.contrib.metrics.streaming_pearson_correlation(y_pred, y_true)[1]

48

49

/opt/conda/lib/python3.6/site-packages/tensorflow/contrib/metrics/python/ops/metric_ops.py in streaming_pearson_correlation(predictions, labels, weights, metrics_collections, updates_collections, name)

3334 weights = weights_broadcast_ops.broadcast_weights(weights, labels)

3335 cov, update_cov = streaming_covariance(

-> 3336 predictions, labels, weights=weights, name='covariance')

3337 var_predictions, update_var_predictions = streaming_covariance(

3338 predictions, predictions, weights=weights, name='variance_predictions')

/opt/conda/lib/python3.6/site-packages/tensorflow/contrib/metrics/python/ops/metric_ops.py in streaming_covariance(predictions, labels, weights, metrics_collections, updates_collections, name)

3218 # batch_mean_prediction is E[x_B] in the update equation

3219 batch_mean_prediction = math_ops.div_no_nan(

-> 3220 math_ops.reduce_sum(weighted_predictions), batch_count)

3221 delta_mean_prediction = math_ops.div_no_nan(

3222 (batch_mean_prediction - mean_prediction) * batch_count, update_count)

/opt/conda/lib/python3.6/site-packages/tensorflow/python/util/dispatch.py in wrapper(*args, **kwargs)

178 """Call target, and fall back on dispatchers if there is a TypeError."""

179 try:

--> 180 return target(*args, **kwargs)

181 except (TypeError, ValueError):

182 # Note: convert_to_eager_tensor currently raises a ValueError, not a

/opt/conda/lib/python3.6/site-packages/tensorflow/python/ops/math_ops.py in div_no_nan(x, y, name)

1095 with ops.name_scope(name, "div_no_nan", [x, y]) as name:

1096 x = ops.convert_to_tensor(x, name="x")

-> 1097 y = ops.convert_to_tensor(y, name="y", dtype=x.dtype.base_dtype)

1098 x_dtype = x.dtype.base_dtype

1099 y_dtype = y.dtype.base_dtype

/opt/conda/lib/python3.6/site-packages/tensorflow/python/framework/ops.py in convert_to_tensor(value, dtype, name, preferred_dtype, dtype_hint)

1085 preferred_dtype = deprecation.deprecated_argument_lookup(

1086 "dtype_hint", dtype_hint, "preferred_dtype", preferred_dtype)

-> 1087 return convert_to_tensor_v2(value, dtype, preferred_dtype, name)

1088

1089

/opt/conda/lib/python3.6/site-packages/tensorflow/python/framework/ops.py in convert_to_tensor_v2(value, dtype, dtype_hint, name)

1143 name=name,

1144 preferred_dtype=dtype_hint,

-> 1145 as_ref=False)

1146

1147

/opt/conda/lib/python3.6/site-packages/tensorflow/python/framework/ops.py in internal_convert_to_tensor(value, dtype, name, as_ref, preferred_dtype, ctx, accept_symbolic_tensors, accept_composite_tensors)

1222

1223 if ret is None:

-> 1224 ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)

1225

1226 if ret is NotImplemented:

/opt/conda/lib/python3.6/site-packages/tensorflow/python/framework/ops.py in _TensorTensorConversionFunction(t, dtype, name, as_ref)

1016 raise ValueError(

1017 "Tensor conversion requested dtype %s for Tensor with dtype %s: %r" %

-> 1018 (dtype.name, t.dtype.name, str(t)))

1019 return t

1020

ValueError: Tensor conversion requested dtype float64 for Tensor with dtype float32: 'Tensor("pearson_r/covariance/Cast:0", shape=(), dtype=float32)'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值