一个奇怪的错误----- InvalidArgumentError:维度为0的切片索引-1超出范围。()

时间:2019-09-29 14:32:54

标签: tensorflow tensorflow2.0

我的计算机安装了win10,tf-nightly-2.0-preview == 2.0.0dev20190926,python3.7&python3.6.8

Tensorflow标准模板:https://tensorflow.google.cn/tutorials/load_data/images#setup

运行tensorflow标准模板时,我得到一个错误

for image, label in labeled_ds.take(1):
    print("Image shape: ", image.numpy().shape)
    print("Label: ", label.numpy())

错误消息:

InvalidArgumentError: slice index -1 of dimension 0 out of bounds. [[{{node strided_slice}}]]
Encountered when executing an operation using EagerExecutor. 

此错误会取消所有将来的操作并毒害其输出张量。

但是,在Google colab中,我安装了tf-nightly-2.0-preview == 2.0.0dev20190926,python == 3.6, 运行代码,但运行正常,没有错误

如果要在计算机上运行此标准模板代码,应该如何修改?

1 个答案:

答案 0 :(得分:0)

我发现在提供的tf.strings.split方法中get_label存在问题。在Colab上,可以在单个正斜杠上进行拆分,但是在本地Windows计算机上,我需要在反斜杠上进行拆分。

因此,如果您的Colab代码如下所示:

def get_label(file_path):
    parts = tf.strings.split(file_path, '/')
    return parts[-2] == settings.CLASS_NAMES

将其更改为在本地运行时如下所示:

def get_label(file_path):
    parts = tf.strings.split(file_path, '\\')
    return parts[-2] == settings.CLASS_NAMES