SCUT-FBP5500-Database-Release icon indicating copy to clipboard operation
SCUT-FBP5500-Database-Release copied to clipboard

TypeError: slice indices must be integers or None or have an __index__ method

Open a-whitej opened this issue 5 years ago • 6 comments

Traceback (most recent call last): File "forward.py", line 134, in main() File "forward.py", line 98, in main means = get_mean_npy(mean_file, crop_size = batch_shape[2:], isColor = is_color) File "forward.py", line 20, in get_mean_npy (_shape[3] - crop_size[1]) / 2:(_shape[3] + crop_size[1]) / 2] TypeError: slice indices must be integers or None or have an index method

a-whitej avatar Jul 11 '19 11:07 a-whitej

Do you change any argments in "forward.py"? It runs well on my computer.

RojunLin avatar Jul 11 '19 12:07 RojunLin

I didnot make any code change. Clone new caffe code with windows version and make install. And run forward.py just it

a-whitej avatar Jul 12 '19 01:07 a-whitej

may be the python version differences. You can change the code like this: mean_npy = mean_npy[ :, int((_shape[2] - crop_size[0]) / 2) : int((_shape[2] + crop_size[0]) / 2), int((_shape[3] - crop_size[1]) / 2) : int((_shape[3] + crop_size[1]) / 2)]

RojunLin avatar Jul 12 '19 01:07 RojunLin

I did this.

Pytorch version has issue.

Anaconda: 3-4.1.1 torch : 1.1.0

Traceback (most recent call last): File "forward.py", line 86, in main() File "forward.py", line 44, in main load_model(torch.load('./models/alexnet.pth'), net) File "E:\Anaconda34\lib\site-packages\torch\serialization.py", line 387, in load return _load(f, map_location, pickle_module, **pickle_load_args) File "E:\Anaconda34\lib\site-packages\torch\serialization.py", line 574, in _load result = unpickler.load() UnicodeDecodeError: 'ascii' codec can't decode byte 0xa4 in position 2: ordinal not in range(128)

a-whitej avatar Jul 12 '19 05:07 a-whitej

For pytorch issue(on Python 3.5.2)

Add:

from functools import partial import pickle pickle.load = partial(pickle.load, encoding="latin1") pickle.Unpickler = partial(pickle.Unpickler, encoding="latin1")

And make change: # load pretrained model load_model(torch.load('./models/alexnet.pth',pickle_module=pickle), net)

a-whitej avatar Jul 12 '19 05:07 a-whitej

I encountered this error as well. At some point in the index there is a "divide by 2" and Python would possibly treat it as float number after dividing by 2. Using integer casting int() should solve the problem.

Mine works well in the caffe version. Not fully sure about Pytorch version.

ygrayson avatar Jul 12 '19 07:07 ygrayson