TypeError: Only integers, slices (`:`), ellipsis (`...`), tf.newaxis (`None`) and scalar tf.int32/tf

Posted 行码阁119

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TypeError: Only integers, slices (`:`), ellipsis (`...`), tf.newaxis (`None`) and scalar tf.int32/tf相关的知识,希望对你有一定的参考价值。

一、前言

在用faster-rcnn-tf2-main 训练自己的数据集时,在第三行代码处报错。

顺带提一下,我找了很久tensorflow2.x实现的faster_rcnn,发现这个写的不错:

https://github.com/bubbliiiing/faster-rcnn-tf2

二、错误提示:

TypeError: Only integers, slices (`:`), ellipsis (`...`), tf.newaxis (`None`) and scalar tf.int32/tf.int64 tensors are valid indices, got array([1076,  806,  797, ..., 3534, 4776, 3912], dtype=int64)

三、错误原因

错误原因,数据类型不对。

四、解决方法

1、首先看错误处的数据类型(代码第二段)。

         c_confs = mbox_conf[i, :, 0]
         print(type(c_confs))

        argsort_index = np.argsort(c_confs)[::-1]
        # c_confs = np.array(c_confs)
        c_confs = c_confs[argsort_index[:self.rpn_pre_boxes]]
<class 'tensorflow.python.framework.ops.EagerTensor'>

2、容易知道,数据类型为EagerTensor类型,我们进行操作是对数组进行操作,因此在数组操作之前,将数据类型转换为array即可(代码第三段)。

            c_confs = mbox_conf[i, :, 0]

            argsort_index = np.argsort(c_confs)[::-1]
            c_confs=np.array(c_confs)




            c_confs = c_confs[argsort_index[:self.rpn_pre_boxes]]

以上是关于TypeError: Only integers, slices (`:`), ellipsis (`...`), tf.newaxis (`None`) and scalar tf.int32/tf的主要内容,如果未能解决你的问题,请参考以下文章

TypeError: Only integers, slices (`:`), ellipsis (`...`), tf.newaxis (`None`) and scalar tf.int32/tf

解决问题:only integer scalar arrays can be converted to a scalar index

TypeError: can only concatenate str (not “int“) to str

成功解决TypeError: only size-1 arrays can be converted to Python scalars

在 Electron 中,使用“typeof”会导致 TypeError: Cannot assign to read only property

请解决这个 TypeError: can only concatenate str (not "int") to str