cpu는 한 번에 하나 밖에 처리 못함
gpu는 동시에 여러 개를 처리 가능
cuda, gpu computing 이 일반화됨
cpu로는 수행시간이 오래걸림
USE_CUDA = torch.cuda.is_available() # GPU를 사용가능하면 True, 아니라면 False를 리턴
device = torch.device("cuda" if USE_CUDA else "cpu") # GPU 사용 가능하면 사용하고 아니면 CPU 사용
print("Device:", device)
위 코드에서
다음 코드는 GPU를 사용가능하게 함
random.seed(777)
torch.manual_seed(777)
if device == 'cuda':
torch.cuda.manual_seed_all(777)
random.seed(777) -> random 모듈에 대한 시드를 설정하고
torch.manual_seed(777) -> pyTorch에서 사용하는 난수 생성기에 대한 시드를 설정
if device == 'cuda':
torch.cuda.manual_seed_all(777) -> 사용중인 장치가 GPU면 모든 GPU에 난수 생성기를 동일한 시드로 초기화
batch 사이즈는 한 번에 학습하는 데이터의 개수를 말한다.
#6만개의 데이터
mnist_train = dsets.MNIST(root='MNIST_data/',
train=True,
transform=transforms.ToTensor(),
download=True)
#1만개의 데이터
mnist_test = dsets.MNIST(root='MNIST_data/',
train=False,
transform=transforms.ToTensor(),
download=True)
transform = transforms.ToTensor()
-> 이미지 데이터를 텐서로 변환하는 역할을 한다.
data_loader = DataLoader(dataset=mnist_train,
batch_size=batch_size, # 100
shuffle=True,
drop_last=True)
6만개 데이터를 batch_size(100개씩) 묶어서 data_loader에 차례대로 전달
그러면 data_loader 에는 100개씩 600개로 저장되어 있음
drop_last = True -> 99개씩 묶어서 전달될 경우 짜투리가 남는데 짜투리가 남으면 버린다는 의미
shuffle = True -> 데이터를 섞는다. ( 데이터가 0 부터 9까지 차례대로 있으면 편견(bias)가 생기기 때문에)
linear = nn.Linear(784, 10, bias=True).to(device)
Linear( In, Out)
Linear(784, 100)
.to(device)는 gpu 이용할 때 사용
만약 없으면 cpu에서 돈다.
네트워크
로스
최적화 이 3가지는 필수
Yhot은 다음과 같은 상태
숫자 1의 경우 0 1 0 0 0 0 0 0 0 0
숫자 2의 경우 0 0 1 0 0 0 0 0 0 0
숫자 3의 경우 0 0 0 1 0 0 0 0 0 0
...
가 100행 있는 구조
다음주 과제 - 오늘 검사했던 숙제를 keras 이용하지 말고 파이썬 파일 오픈(fopen)을 이용해서 만들어보기
'학교 > 인공지능' 카테고리의 다른 글
21번째 수업(0530) (0) | 2024.05.30 |
---|---|
20번째 수업(0529) (0) | 2024.05.29 |
18번째 수업(0522) (0) | 2024.05.22 |
17번째 수업(0509) (0) | 2024.05.09 |
16번째 수업(0508) (0) | 2024.05.08 |