InvalidArgumentError (see above for traceback): targets[0] 或targets[1]is out of range

运行程序时报错:

InvalidArgumentError (see above for traceback): targets[1]is out of range

百度了一下说出现这个错误的原因,都是因为你的labels标签数目和实际网络的分类数不一致,检查了一下,我的人脸识别,id数确实为3161,程序里也写的3161,后来发现我的id数从1开始,而label默认从0开始,到3160,为3161个id数,而当程序从tfrecord里解析出id为3161的图片时就会报错。
在这里插入图片描述
解决方法是在程序中加入一句代码,将label 减1就可以了

self.train_input.orbbec_color, self.train_input.orbbec_ir, self.train_input.orbbec_depth, labels = self.sess.run(data_train_batch)
labels = [i - 1 for i in labels]
# print('labels', labels)
#结果为:
labels=[3161 ,1514 ,2477 ,2583]变成labels=[3160 ,1513 ,2476 ,2582]

再次运行程序没问题。
所以这类报错应该都是这种原因引起的,仔细一点都是可以解决的。

这个错误是因为您尝试在 GPU 上执行一个不支持 GPU 的操作。具体地说,在您的代码中,`IteratorToStringHandle` 这个操作被指定在了 `/device:GPU:0` 上执行,但是这个操作只能在 CPU 上运行。因此,TensorFlow 抛出了这个错误。 要解决这个问题,您需要将 `IteratorToStringHandle` 这个操作从 GPU 设备上移除,使其能够在 CPU 上运行。一种简单的方法是将 `with tf.device("/gpu:0"):` 改为 `with tf.device("/cpu:0"):`,这样包括 `IteratorToStringHandle` 在内的所有操作都将在 CPU 上运行。修改后的代码如下所示: ```python with tf.device("/cpu:0"): # 在这里添加您的 TensorFlow 训练代码 ``` 如果您需要将某些操作固定在 GPU 上执行,可以使用 `tf.device` 和 `tf.compat.v1.disable_eager_execution()` 来手动控制 TensorFlow 的计算图。具体来说,您可以在 `with tf.device("/gpu:0"):` 块中创建一个 TensorFlow 计算图,并使用 `tf.compat.v1.Session` 来运行这个计算图。这样,您就可以将某些操作固定在 GPU 上运行,而将其他操作放在 CPU 上运行。下面是一个示例代码: ```python import tensorflow as tf # 关闭 Eager Execution tf.compat.v1.disable_eager_execution() # 定义一个 TensorFlow 计算图 with tf.device("/gpu:0"): x = tf.constant([1.0, 2.0, 3.0]) y = tf.constant([4.0, 5.0, 6.0]) z = tf.add(x, y) # 创建一个 TensorFlow 会话并运行计算图 with tf.compat.v1.Session() as sess: # 将 z 固定在 GPU 上运行 result = sess.run(z) print(result) ``` 在这个示例代码中,`x` 和 `y` 这两个操作被固定在 GPU 上执行,而 `z` 这个操作则会被自动放到 GPU 上执行。最终,您将获得一个包含 `[5.0, 7.0, 9.0]` 的 NumPy 数组。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我现在强的可怕~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值