gpt4 book ai didi

python - 如何除以 Tensorflow 中向量的大小来计算平均损失(如 MSE)?

转载 作者:行者123 更新时间:2023-12-01 09:27:03 26 4
gpt4 key购买 nike

我有两个 float32 向量,想要计算均方误差 (MSE)。

yvec = tf.placeholder("float32", shape=(None,))
yhatvec = tf.placeholder("float32", shape=(None,))

mse = tf.reduce_sum(tf.square(yhatvec - yvec)) / tf.size(yvec)

compute_mse = lambda vector1, vector2: mse.eval({yhatvec: vector1, yvec: vector2})

compute_mse([0 1 2 3 4], [5 4 3 2 1])

但是tf.size不会返回向量的长度。我收到一个错误:

对于数据类型为 int32 的张量,请求数据类型 float32 的张量转换:'Tensor("Size_24:0", shape=(), dtype=int32)'

如何获得向量的长度?在Python中我们使用len(vec)

最佳答案

tf.size 很好,但它以整数形式返回结果。您需要在划分之前转换为 float ,如错误消息中所述

Tensor conversion requested dtype float32 for Tensor with dtype int32

所以你可以写

mse = tf.reduce_sum(tf.square(yhatvec - yvec)) / tf.to_float(tf.size(yvec))

或者,使用 tf.reduce_mean 为您计算平均值

mse = tf.reduce_mean(tf.square(yhatvec - yvec))

或者,根据您的具体情况,您也可以使用预定义的损失

mse = tf.losses.mean_squared_error(yvec, yhatvec)

关于python - 如何除以 Tensorflow 中向量的大小来计算平均损失(如 MSE)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50299831/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com