[Tensorflow Error] AttributeError: 'str' object has no attribute 'decode'

rommie·2022년 6월 2일
0

Error 기록

목록 보기
2/2
post-thumbnail

에러 발생

tf를 사용하여 만든 모델을 불러오는 도중에 다음과 같은 오류가 발생하였습니다.

결론!

'conda install h5py==2.10.0'으로 문제를 해결하였습니다.

과정 설명

현재 안저영상 혈관 segmentation 프로젝트를 진행 중이며, 다음 github의 모듈을 clone하여 사용하려고 합니다. Tensorflow 버전이 1.15.2에서 코드가 작성되었기 때문에, 저 또한 환경을 똑같이 만들어줘야 했습니다. python 버전 중 tensorflow 1.15.2를 지원하지 않는 경우도 있고, tf는 낮은 버전이지만 pytorch나 다른 라이브러리들의 버전이 너무 높으면 충돌이 발생할 수 있기 때문에 가상환경을 만들어 사용했습니다.

따라서, python을 3.6 버전으로 설치해준 뒤, tensorflow를 1.15.2로 설치하고, requirements.txt에 있는 패키지도 모두 설치 완료하여 코드를 돌리기 위한 환경을 설정해줬습니다. h5로 저장된 모델을 불러와 segmentation을 수행하려 하는데, 제목과 같은 오류가 발생했습니다. 역시 이를 해결하기 위해 엄청난 시간동안 구글링을 할 수 밖에 없었고, 수많은 시행착오를 거치게 되었습니다.

먼저, 제목과 같은 오류가 발생한 이유는 h5py의 버전 문제입니다. tensorflow를 설치하면서 h5py가 자동으로 설치된다고 하는데, 이때 버전이 3.X가 되면 위와 같은 에러를 출력한다고 합니다.

다음과 같은 명령어를 terminal에 수행해주면, 현재 깔린 패키지의 버전을 알 수 있습니다.

pip list

출력 결과는 다음과 같습니다.

이유는 모르겠지만, h5py가 깔려있지 않습니다..(아마도 tf가 너무 옛날 버전이여서 그런게 아닐까..라고 추측..!)

pip install h5py

위 코드를 실행해주면 h5py가 깔리지만, 최신 버전으로 설치되기 때문에 현재 저의 코드에서는 같은 오류가 발생할 수 있습니다. 따라서, 다운그레이드 해주는 방법을 사용해야 합니다.

1. pip install h5py==2.10.0 --force-reinstall 실행 -> 오류 발생

이 방법으로 많은 분들이 에러를 해결했다고 합니다. 아마 저와 같은 에러가 발생하신 분들은 터미널에 위의 명령문을 입력하면 해결될 겁니다. 그러나 저는 오류가 났습니다..!

error: legacy-install-Failure

이 에러도 찾아보니, 버전 문제인 것 같았습니다. 아무래도 tensorflow 1. 버전은 너무나도 옛날 버전이기 때문에 pip로 설치하는데 어려움이 있는 것 같았습니다.

이 경우에 sudo-apt로 패키지 업그레이드를 해주면 오류가 해결된다고 합니다! 그러나 저는.. 회사의 서버를 사용하고 있기 때문에, sudo 명령어의 접근권한이 제한되어 있다는...안타까운..사실..!

2. conda install h5py==2.10.0 -> 오류 해결!

아무리 구글링해도, 1번 이외의 다른 방법은 찾을 수 없었습니다. 한 번 속는셈 치고 pip가 아닌 conda로 설치를 해봤는데...!!!

잘 깔렸습니다!!! 그리고 모델을 불러오는 과정에서 더이상의 오류가 발생하지 않고 있습니다!!!

YEAH~

얼떨결에 오류를 해결하게 되어서, 너무 행복하네요! 정말 이 오류로 몇 시간을 날린건지.... 혹시 다른 분들 중에서도 pip로 설치가 안될 때, conda로 한 번..! 쓱 해보시길 바랍니다!
(++ conda로 설치했기 때문에 pip list 명령어를 실행하게 되면 h5py가 안뜰 수 있습니다!)

profile
🤗🤗🤗

0개의 댓글