python 출력 결과 새로 고침 및 진도 바 구현 작업

print 함수
python 출력 은 주로 print 함 수 를 사용 합 니 다.print 함수 소개:
print(*objects, sep=' ', end='', file=sys.stdout, flush=False)
*objects 는 인쇄 할 값 을 표시 하고 여러 개의 이름 없 는 인자 나 인쇄 할 값 을 표시 합 니 다.
sep=',위 에서 인쇄 할 값 의 중간 간격 에 대응 하여 기본적으로 빈 칸 입 니 다.
end='',입력 값 이 인쇄 된 후의 끝 기호 입 니 다.기본 값 은 줄 바 꿈 문자 이 고 스스로 설정 할 수 있 습 니 다.
file=sys.stdout,인쇄 출력 파 라 메 터 를 설정 하고 기본 값 으로 터미널 에 인쇄 하 며 인쇄 를 파일 에 저장 할 수 있 습 니 다.
flush=False,인쇄 결 과 를 새로 고 칠 지 여부 입 니 다.
한 줄 의 출력 결과 와 새로 고침
한 줄 에 출력 결 과 를 표시 하고 새로 고침 할 때마다'\r'는 현재 의 시작 으로 돌아 가 는 것 을 표시 합 니 다.end='는 끝 문자 가 비어 있 음 을 표시 합 니 다.그러면 매번 결 과 를 업데이트 할 수 있 습 니 다.

import time
for i in range(15):
  time.sleep(0.5) #           ,       sleep
  print('\r', i, end='')
  # print('\r', 15-i, end='') #            
위의 코드 에 문제 가 있 습 니 다.출력 i 가 크 고 작 을 때 자릿수 변화 가 있 을 때 결과 가 정확 하지 않 습 니 다.format 으로 출력 을 포맷 하여 문 제 를 해결 할 수 있 습 니 다.

import time
for i in range(15):
  time.sleep(0.5)
  print('\r', "{:d}".format(15-i), end='')
모형 훈련 중 loss 와 acc 의 리 셋 출력
우 리 는 기계 학습 과 깊이 있 는 학습 모델 을 훈련 할 때 한 동안 손실 함수 와 정확 도 를 출력 합 니 다.매번 직접 print 로 출력 하고 단말 기 는 많은 정 보 를 출력 합 니 다.여 기 는 한 줄 로 출력 하고 새로 고침 하 는 방법 으로 이런 정 보 를 출력 합 니 다.우 리 는 epochs 와 batch 의 수량 을 설정 하고 매번 batch 출력 이 새로 고침 되 며 한 epoch 가 끝 난 후에 train 과 test 의 결 과 를 동시에 출력 합 니 다.

import time

#   epochs batch   
epochs = 5
n_batch = 15
#           loss acc
train_loss = 1.2345
train_acc = 0.345678
test_loss = 1.1234
test_acc = 0.235467

for i in range(epochs):
  for j in range(n_batch):
    time.sleep(0.5)
    train_loss -= 0.001
    train_acc += 0.0001

    print("\rEpoch: {:d} batch: {:d} loss: {:.4f} acc: {:.4f} | {:.2%}"
       .format(i+1, j+1, train_loss, train_acc, (j+1)*1.0/n_batch), end='')
       
  test_loss -= 0.001
  test_acc += 0.0001
  
  print("\rEpoch: {:d}/{:d} train_loss: {:.4f} test_loss: {:.4f} train_acc: {:.4f} test_acc: {:.4f}"
   .format(i+1, 5, train_loss, test_loss, train_acc, test_acc), end='
')
여기 주의 하 세 요.print 에 있 는"Epoch"앞 에"\r"가 있 습 니 다.이것 은 반드시 있어 야 합 니 다.동시에 안쪽 순환 end=",바깥 순환 end="가 있어 야 합 니 다.최종 인쇄 결 과 는 다음 과 같 습 니 다.

tqdm 진행 표시 줄
먼저 tqdm:pip install tqdm 설치
간단하게 사용 하고 정 수 를 읽 으 며 tqdm 에 list 를 직접 전달 합 니 다.만약 에 정수 가 주어진 다 면 trange 를 직접 사용 할 수 있 습 니 다.

import time
from tqdm import tqdm, trange

for i in tqdm(range(100)):
  time.sleep(0.05)
  # do something

# for i in trange(100):
#   time.sleep(0.05)
#   # do something
결 과 는 다음 과 같 습 니 다.백분율 과 현재 몇 개 까지 처 리 했 는 지 보 여 줍 니 다.

tdqm 에서 입력 한 list 는 문자열 일 수도 있 고 출력 진도 항목 에 대한 설명 을 추가 할 수도 있 습 니 다.

import time
from tqdm import tqdm
pbar = tqdm(["a", "b", "c", "d", "e"])
for char in pbar:
  time.sleep(0.8)
  pbar.set_description("Processing %s" % char)
  # pbar.set_description("Processing {0}".format(char))

이상 의 python 출력 결과 갱신 및 진도 항목 의 실현 작업 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 께 참고 가 되 고 저희 도 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기