728x90
반응형
data_alpha = ['A','B','C','D','E']
for i in enumerate(data_alpha ):
print(i)
-----------------
(0, 'A')
(1, 'B')
(2, 'C')
(3, 'D')
(4, 'E')
enumerate는 '열거하다'라는 뜻을 가진 단어이다.
enumerate 함수를 사용하면 for 문에서 (index, data)같은 튜플 형태로 데이터가 들어온다.
아래와같은 형태로도 받을 수 있다.
data_alpha = ['A','B','C','D','E']
for idx, i in enumerate(data_alpha ):
print(f"인덱스:{idx}, data:{i}")
--------------------
인덱스:0, data:A
인덱스:1, data:B
인덱스:2, data:C
인덱스:3, data:D
인덱스:4, data:E
아래의 경우 pytorch에서의 활용 예이다.
start = time()
from tqdm.auto import tqdm
# for문을 이용하여 epoch마다 학습을 수행하는 코드를 작성합니다.
for epoch in tqdm(range(epochs)):
# dataloader로 데이터를 불러와서, batch 단위로 데이터를 가져다줌.
correct = 0
total_loss = 0.0
for idx, data in enumerate(trainloader): #enumerate
images, labels = data[0].to(device), data[1].to(device)
# optimizer의 gradient 초기화.
optimizer.zero_grad()
# 모델에 feed-forward를 한 뒤, forward 함수를 실행함.
outputs = model(images)
preds = torch.max(outputs, dim=1)[1] # argmax 128개
correct += (preds == labels).sum() # 전체 iterations에 대해서 몇 개나 맞았는지 보려고.
# loss를 계산하고
loss = criterion(outputs, labels)
total_loss += loss.item()
if idx == len(trainloader)-1:111111
print(loss.item()) # 128개에 대한 loss
# weight update를 합니다. (back-propagation)
loss.backward() # gradient 계산
optimizer.step() # weight update
print(f"Epoch {epoch+1} | Train Accuracy : {correct/len(trainset):.4f} | Train loss : {total_loss / len(trainloader):.4f}")
end = time()
print("Training Done.")
print(f"Elasped Time : {end-start:.4f} secs.")
728x90
반응형
'programming language > Python' 카테고리의 다른 글
[Python] try, except를 활용해서 import와ModuleNotFoundError시에 install하기 (0) | 2023.08.25 |
---|---|
[Python] any() (0) | 2023.08.22 |
[Python] conditional expression, list comprehension (0) | 2023.07.18 |
[Python] 연산관련 function과 method (0) | 2023.07.18 |
[Python] lambda (0) | 2023.07.18 |