pytorch 를 사용 할 때 발생 하 는 문제 요약
1.ubuntu vscode 가상 환경 전환
ubuntu 시스템 에서 작업 영역 폴 더 에 사용 할 가상 환경 을 설정 합 니 다.이전에 필 자 는 vscode 에 내 장 된 터미널 에서 가상 환경 을 전환 하면 된다 고 오 해 했 는데 나중에 vscode 를 설정 한 해석 기(interpreter)를 통 해
구체 적 인 방법 은 다음 과 같다.
설정 할 폴 더 를 선택 하고 vscode 왼쪽 아래 에 있 는"Python***"이 라 고 적 힌 위치(또는 단축 키"ctrl+shift+p")를 누 르 십시오."폴 더 를 선택 하 십시오."해석 기 목록 에서 사용 할 해석 기 를 선택 하 십시오.
설정 이 완료 되면 폴 더 아래 에'vscode'라 는 폴 더 가 하나 더 생 깁 니 다.그 중에서'settings.json'이라는 파일 이 하나 더 생 깁 니 다.설정 을 통 해 이 파일 에 가상 환경 에 있 는 python 경 로 를 가리 키 는 항목 이 하나 더 생 깁 니 다.
예 를 들 면:
python.pythonPath:"/home/lh/anaconda3/envs/pytorch/bin/python"
2.DataLoader 타 임 스 오류 사용:
raise RuntimeError('already started')
오류 위치 가 DataLoader 를 사용 할 때 인자"numworkers'는 0 이상 의 값 으로 설정 되 었 습 니 다.다 중 스 레 드 기능 을 열지 않 았 기 때 문 으로 추정 되 며,해결 방법 은 numworkers 를 0 으로 설정 합 니 다.
여러 개의 키 스 레 드 를 사용 하여 데 이 터 를 불 러 올 필요 가 있다 면 메 인 프로그램 이"if"에 있어 야 합 니 다.name__ = 'main'에서 실 행 됩 니 다.
3.pytorch 에서 Tensorboard 사용
질문(1):
Import Error:TensorBoard logging requires TensorBoard with Python summary writer installed
현재 환경 에 Tensorboard 가 설치 되 어 있 지 않 기 때 문 입 니 다.컴퓨터 에 anaconda 가 설치 되 어 있 으 면'conda install tensorboard'명령 을 직접 사용 하면 됩 니 다.
질문(2):tensorboard 인터페이스 조정
프로그램 에서 Summary Writer 를 호출 하면 콘 솔 에서 다음 과 같은 정 보 를 제공 합 니 다.
이 가운데 주의해 야 할 것 은'--port 41889'다.그리고 콘 솔 에'tensorboard-logdir='log'-port=41889'명령 을 입력 합 니 다.-logdir 는 이전에 지정 한 로그 디 렉 터 리 를 가리 키 는 데 사 용 됩 니 다.-port 는 이전 콘 솔 에서 제 시 된 포트 번호 입 니 다.명령 을 입력 하면 콘 솔 에 웹 주 소 를 알려 줍 니 다.이 웹 주 소 를 열 면 브 라 우 저 에서 tensorboard 인터페이스 를 열 수 있 습 니 다.
4、pytorch 가 dataloader 를 사용 할 때,
"TypeError:defaultcollect:batch must contain tensors, numpy arrays, numbers,dicts or lists; found
이 는 torchvision.dataset 대상 을 만 들 때 데이터베이스 에 있 는 그림 을 torch 장 량 으로 바 꾸 지 않 았 기 때 문 입 니 다.데이터베이스 대상 을 만 들 때 인자 transform 을 다음 과 같이 설정 하면 됩 니 다.transform=transform.Totensor().
5.잘못 보고
RuntimeError:Input type (torch.FloatTensor) and weight type (torch.cuda.FloatTensor) should be the same
이 는 모델 에 들 어 온 데이터 가 CPU 메모리 에 있 고 모델 자체 가 GPU 메모리 에 놓 여 있 기 때문이다.따라서 입력 한 데 이 터 를 GPU 메모리 에 넣 기만 하면 이 문 제 를 해결 할 수 있다.
6.pytorch,동명 함수 뒤에''을 추가 합 니 다.예 를 들 어'clamp()'와'clamp ()'
일반적으로 함수 뒤에 밑줄 이 있 으 면 현재 장 량 의 값 을 바 꾸 는 동시에 수 정 된 복사 본 을 되 돌려 주 는 것 을 의미 합 니 다.밑줄 을 치지 않 으 면 수 정 된 사본 만 되 돌려 주 고 원래 장 량 의 값 을 바 꾸 지 않 습 니 다.
예 를 들 면:
import torch
a=torch.rand(3)
print('a:{}'.format(a))
print("clamp :")
b=a.clamp(0, 0.5)
print('b:{}'.format(b))
print('a:{}'.format(a))
print("clamp_ :")
b=a.clamp_(0, 0.5)
print('b:{}'.format(b))
print('a:{}'.format(a))
결 과 는 다음 그림 입 니 다.장 량 a 가 clamp 를 호출 하고 있 음 을 알 수 있 습 니 다.함수 후 그 자체 의 값 도 변 하지만 클 램프 를 호출 할 때 수 정 된 복사 본 만 되 돌려 줍 니 다.7.python 중(1)과(1,)의 차이
'(1)'라 는 문법 은 int 형식의 데 이 터 를 얻 었 고,'(1,)'는 turple 형식의 데 이 터 를 얻 었 다.인증 은 다음 과 같 습 니 다:
8.tqdm 진도 항목
tqdm.update()에 들 어 오 는 매개 변 수 는 현재 진도 가 아 닌 진도 가 진행 되 는 길 이 를 말 합 니 다.
보충:Pytorch 에서 흔히 볼 수 있 는 오류 해결 방안
본 고 는 pytorch 가 발생 한 운행 시 오 류 를 기록 하고 지속 적 으로 업데이트 하 는 데 사 용 됩 니 다.
1.변수 가 있 는 장치(CPU,GPU)가 일치 하지 않 는 문제
RuntimeError: Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the same
가능 한 원인:현재 코드 가 GPU 에서 실행 된다 고 가정 하고 my 를 진행 하 였 습 니 다.model.to(device)가 작 동 했 습 니 다.주의 마 이model 의 속성(즉 self.시작 변수)만 진행 할 수 있 습 니 다.to(device).이 오류 가 발생 하면 중간 변 수 는 수 동 으로.to(device)를 표시 해 야 할 수도 있 습 니 다~
2.Conv2d 에서 padding 또는 stride 의 매개 변수 개수 가 잘못된 문제
RuntimeError: expected padding to be a single integer value or a list of 1 values to match the convolution dimensions, but got padding=[0, 0]
원인 1:
2 차원 그림 에 있어 서 그의 padding 도 2 차원 이다.즉,가로,세로 방향 에 모두 padding 을 설정 해 야 한다(물론 이 두 숫자 는 일반적으로 같다).지금 왜 우리 패 딩 이 1 차원 이 어야 한 다 는 걸 알려 주 는 거 죠?틀림없이 입력 데이터 차원 이 틀 렸 을 것 이다.
원인 2:
위 에서 말 한 것 은 가장 가능 한 상황 입 니 다.그림 이 4 차원 인 데 도 이 오류 가 있 는 것 을 발견 하면 Conv2d()의 입력 인 자 를 확인 하 십시오.
예 를 들 어 만약 에 stride 를 2 차원 3 이 아 닌 1 차원[3]으로 설정 하면(주의 3 은[3,3]로 자동 으로 처리 되 고 padding 은 2 차원 0 으로 처 리 됩 니 다.
pytorch 는 stride 가 1 차원 이 고 padding 은 2 차원 인 것 을 발견 하면 잘못 보고 합 니 다.
3.inplace operation 문제
one of the variables needed for gradient computation has been modified by an inplace operationone of the variables needed for gradient computation has been modified by an inplace operation
inplace 작업 은 backward 를 진행 할 수 없 게 할 수 있 습 니 다(현재 Tensor 가 다른 곳 에서 사 용 될 수 있 기 때 문 입 니 다).예 를 들 어 forward 에 다음 코드 가 나 타 났 습 니 다.
x += y
이 가능 하 다,~할 수 있다,...
x = x + y
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정확도에서 스케일링의 영향데이터셋 스케일링은 데이터 전처리의 주요 단계 중 하나이며, 데이터 변수의 범위를 줄이기 위해 수행됩니다. 이미지와 관련하여 가능한 최소-최대 값 범위는 항상 0-255이며, 이는 255가 최대값임을 의미합니다. 따...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.