pytorch 를 사용 할 때 발생 하 는 문제 요약

5346 단어 pytorch문제.
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
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기