Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
a-whitej opened this issue Jul 11, 2019 · 6 comments

Comments

@a-whitej
Copy link

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

@RojunLin
Copy link
Contributor

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

@a-whitej
Copy link
Author

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

@RojunLin
Copy link
Contributor

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)]

@a-whitej
Copy link
Author

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
Copy link
Author

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)

@ygrayson
Copy link

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants