https://github.com/iarai/science4cast
토치 심플 모델
#책 #파이토치 딥러닝 마스터 소스코드
https://github.com/deep-learning-with-pytorch/dlwpt-code
[1부] 파이토치 핵심
1장 딥러닝과 파이토치 라이브러리 소개
__1.1 딥러닝 혁명
__1.2 딥러닝을 위한 파이토치
__1.3 왜 파이토치인가?
____1.3.1 딥러닝 경쟁 구도
__1.4 파이토치 딥러닝 프로젝트 둘러보기
__1.5 하드웨어와 소프트웨어 요구사항
____1.5.1 주피터 노트북
__1.6 연습 문제
__1.7 핵심 요약
2장 사전 훈련된 신경망
__2.1 이미지를 인식하는 사전 훈련된 신경망
____2.1.1 이미지 인식을 위해 사전 훈련된 신경망 가져오기
____2.1.2 알렉스넷
____2.1.3 레즈넷
____2.1.4 준비, 시...작 전에 잠깐만
____2.1.5 실행!
____2.2 가짜 이미지를 만드는 사전 훈련된 모델
____2.2.1 GAN 게임
____2.2.2 사이클GAN
____2.2.3 말을 얼룩말로 바꾸는 신경망
__2.3 장면을 설명하는 사전 훈련된 신경망
____2.3.1 뉴럴토크2
__2.4 토치 허브
__2.5 결론
__2.6 연습 문제
__2.7 핵심 요약
3장 텐서 구조체
__3.1 부동소수점 수의 세계
__3.2 텐서: 다차원 배열
____3.2.1 파이썬 리스트에서 파이토치 텐서로
____3.2.2 첫 텐서 만들어보기
____3.2.3 텐서의 핵심
__3.3 텐서 인덱싱
__3.4 이름이 있는 텐서
__3.5 텐서 요소 타입
____3.5.1 dtype으로 숫자 타입 지정하기
____3.5.2 모든 경우에 사용하는 dtype
____3.5.3 텐서의 dtype 속성 관리
__3.6 텐서 API
__3.7 텐서를 저장소 관점에서 머릿속에 그려보기
____3.7.1 저장 공간 인덱싱
____3.7.2 저장된 값을 수정하기: 텐서 내부 연산
__3.8 텐서 메타데이터: 사이즈, 오프셋, 스트라이드
____3.8.1 다른 텐서의 저장 공간에 대한 뷰 만들기
____3.8.2 복사 없이 텐서 전치하기
____3.8.3 더 높은 차원에서의 전치 연산
____3.8.4 인접한 텐서
__3.9 텐서를 GPU로 옮기기
____3.9.1 텐서 디바이스 속성 관리
__3.10 넘파이 호환
__3.11 일반화된 텐서도 텐서다
__3.12 텐서 직렬화
____3.12.1 h5py로 HDF5 병렬화하기
__3.13 결론
__3.14 연습 문제
__3.15 핵심 요약
4장 실제 데이터를 텐서로 표현해보기
__4.1 이미지 다루기
____4.1.1 컬러 채널 더하기
____4.1.2 이미지 파일 로딩
____4.1.3 레이아웃 변경하기
____4.1.4 데이터 정규화
__4.2 3차원 이미지: 용적 데이터
____4.2.1 특수 포맷 로딩
__4.3 테이블 데이터 표현하기
____4.3.1 실세계 데이터셋 사용하기
____4.3.2 와인 데이터를 텐서로 읽어오기
____4.3.3 점수 표현하기
____4.3.4 원핫 인코딩
____4.3.5 언제 카테고리화 할 것인가
____4.3.6 임계값으로 찾기
__4.4 시계열 데이터 다루기
____4.4.1 시간 차원 더하기
____4.4.2 시간 단위로 데이터 만들기
____4.4.3 훈련 준비
__4.5 텍스트 표현하기
____4.5.1 텍스트를 숫자로 변환하기
____4.5.2 문자 원핫 인코딩
____4.5.3 모든 단어를 원핫 인코딩하기
____4.5.4 텍스트 임베딩
____4.5.5 청사진으로서의 텍스트 임베딩
__4.6 결론
__4.7 연습 문제
__4.8 핵심 요약
5장 학습 기법
__5.1 시대를 초월하는 모델링 학습
__5.2 학습은 파라미터 추정에 불과하다
____5.2.1 온도 문제
____5.2.2 데이터 수집
____5.2.3 데이터 시각화
____5.2.4 먼저 선형 모델을 골라 시도해보기
__5.3 손실을 줄이기 위한 방안
____5.3.1 파이토치로 문제 풀어보기
__5.4 경사를 따라 내려가기
____5.4.1 손실 줄이기
____5.4.2 분석
____5.4.3 모델 적합을 위한 반복
____5.4.4 입력 정규화
____5.4.5 (다시 해보는) 시각화
__5.5 파이토치의 자동미분: 모든 것을 역전파하라
____5.5.1 기울기 자동 계산
____5.5.2 골라쓰는 옵티마이저
____5.5.3 훈련, 검증, 과적합
____5.5.4 자동미분의 주의사항과 자동미분 끄기
__5.6 결론
__5.7 연습 문제
__5.8 핵심 요약
6장 신경망을 활용한 데이터 적합
__6.1 인공 뉴런
____6.1.1 다중 계층 신경망 합성하기
____6.1.2 오차 함수
____6.1.3 우리에게 필요한 건 활성 함수
____6.1.4 그 밖의 활성 함수
____6.1.5 최적의 활성 함수 고르기
____6.1.6 신경망에서 학습의 의미
__6.2 파이토치 nn 모듈
____6.2.1 forward 대신 __call__ 사용하기
____6.2.2 다시 선형 모델로
__6.3 드디어 신경망
____6.3.1 선형 모델 대체하기
____6.3.2 파라미터 살펴보기
____6.3.3 선형 모델과 비교하기
__6.4 결론
__6.5 연습 문제
__6.6 핵심 요약
7장 새와 비행기 구별하기: 이미지 학습
__7.1 작은 이미지를 모아 놓은 데이터셋
____7.1.1 CIFAR-10 다운로드
____7.1.2 데이터셋 클래스
____7.1.3 데이터 변환
____7.1.4 데이터 정규화
__7.2 새와 비행기를 구별하기
____7.2.1 데이터셋 구축
____7.2.2 완전 연결 모델
____7.2.3 분류기의 출력
____7.2.4 출력을 확률로 표현하기
____7.2.5 분류를 위한 손실값
____7.2.6 분류기 훈련
____7.2.7 완전 연결의 한계
__7.3 결론
__7.4 연습 문제
__7.5 핵심 요약
8장 컨볼루션을 활용한 일반화
__8.1 컨볼루션
____8.1.1 컨볼루션의 역할
__8.2 컨볼루션 사용해보기
____8.2.1 경계 패딩하기
____8.2.2 컨볼루션으로 피처 찾아내기
____8.2.3 깊이와 풀링으로 한 단계 더 인식하기
____8.2.4 우리의 신경망에 적용하기
__8.3 nn.Module 서브클래싱하기
____8.3.1 nn.Module로 정의된 우리의 신경망
____8.3.2 파이토치가 파라미터와 서브모듈을 유지하는 방법
____8.3.3 함수형 API
__8.4 우리가 만든 컨볼루션 신경망 훈련시키기
____8.4.1 정확도 측정
____8.4.2 모델을 저장하고 불러오기
____8.4.3 GPU에서 훈련시키기
__8.5 모델 설계
____8.5.1 메모리 용량 늘리기: 너비
____8.5.2 모델이 수렴하고 일반화하도록 돕는 방법: 정규화
____8.5.3 더 복잡한 구조를 배우기 위해 깊이 파헤치기: 깊이
____8.5.4 모델의 성능 비교
____8.5.5 이미 오래된 방식
__8.6 결론
__8.7 연습 문제
__8.8 핵심 요약
[2부] 실전 이미지 학습: 폐암 조기 진단
9장 암과 싸워 이기기 위한 파이토치 활용
__9.1 사용 사례 소개
__9.2 대규모 프로젝트 준비
__9.3 CT 스캔이란
__9.4 프로젝트: 엔드투엔드 폐암 진단기
____9.4.1 신경망이 동작할 때까지 데이터를 던져넣을 수 없는 이유
____9.4.2 결절이란 무엇인가
____9.4.3 데이터 소스: LUNA 그랜드 챌린지
____9.4.4 LUNA 데이터 다운로드
__9.5 결론
__9.6 핵심 요약
10장 여러 데이터 소스를 통합 데이터셋으로 합치기
__10.1 원본 CT 데이터 파일
__10.2 LUNA 애노테이션 데이터 파싱
____10.2.1 훈련셋과 검증셋
____10.2.2 애노테이션 데이터와 후보 데이터 합치기
__10.3 개별 CT 스캔 로딩
____10.3.1 하운스필드 단위
__10.4 환자 좌표계를 사용해 결절 위치 정하기
____10.4.1 환자 좌표계
____10.4.2 CT 스캔 형태와 복셀 크기
____10.4.3 밀리미터를 복셀 주소로 변환하기
____10.4.4 CT 스캔에서 결절 추출하기
__10.5 간단한 데이터셋 구현
____10.5.1 getCtRawCandidate 함수로 후보 배열 캐싱하기
____10.5.2 LunaDataset.__init__으로 데이터셋 만들기
____10.5.3 훈련/검증 분리
____10.5.4 데이터 렌더링
__10.6 결론
__10.7 연습 문제
__10.8 핵심 요약
11장 종양 탐지를 위한 분류 모델 훈련
__11.1 기본 모델과 훈련 루프
__11.2 애플리케이션의 메인 진입점
__11.3 사전 훈련 설정과 초기화
____11.3.1 모델과 옵티마이저 초기화
____11.3.2 데이터 로더의 관리와 데이터 공급
__11.4 첫 번째 경로 신경망 설계
____11.4.1 핵심 컨볼루션
____11.4.2 전체 모델
__11.5 모델 훈련과 검증
____11.5.1 computeBatchLoss 함수
____11.5.2 훈련 때와 유사한 검증 루프
__11.6 성능 메트릭 출력
____11.6.1 logMetrics 함수
__11.7 훈련 스크립트 실행
____11.7.1 훈련에 필요한 데이터
____11.7.2 막간을 활용해 enumerateWithEstimate 함수 알아보기
__11.8 모델 평가: 정확도 99.7%라면 잘 끝난 것일까?
__11.9 텐서보드로 훈련 관련 메트릭을 그려보기
____11.9.1 텐서보드 실행
____11.9.2 메트릭 로깅 함수가 텐서보드를 지원하도록 만들기
__11.10 모델이 결절 탐지를 학습하지 못하는 이유
__11.11 결론
__11.12 연습 문제
__11.13 핵심 요약
12장 메트릭과 증강을 활용한 훈련 개선
__12.1 개선을 위한 상위 계획
__12.2 착한 개와 나쁜 녀석: 거짓 양성과 거짓 음성
__12.3 긍정과 부정의 경우를 도식화하기
____12.3.1 아무나 보고 짖는 록시의 장점은 재현율
____12.3.2 잠은 많아도 도둑은 잘 잡는 프레스톤의 특기는 정밀도
____12.3.3 logMetrics으로 정밀도와 재현율 구하기
____12.3.4 궁극의 메트릭: F1 점수
____12.3.5 새 메트릭으로 모델이 잘 동작하는지 확인하기
__12.4 이상적인 데이터셋의 모습
____12.4.1 데이터를 실제보다 ‘이상’에 가깝게 만들기
____12.4.2 균형잡힌 LunaDataset으로 훈련시킨 결과의 차이
____12.4.3 과적합 증상 알아채기
__12.5 과적합 문제 다시 살펴보기
____12.5.1 과적합된 얼굴-나이 예측 모델
__12.6 데이터 증강으로 과적합 방지하기
____12.6.1 특별 데이터 증강 기술
____12.6.2 데이터 증강 효과 확인하기
__12.7 결론
__12.8 연습 문제
__12.9 핵심 요약
13장 세그멘테이션을 활용한 의심 결절 탐색
__13.1 프로젝트에 두 번째 모델 추가하기
__13.2 다양한 세그멘테이션 유형
__13.3 시맨틱 세그멘테이션: 픽셀 단위 분류
____13.3.1 유넷 아키텍처
__13.4 세그멘테이션을 위한 모델 업데이트
____13.4.1 기성품 모델을 프로젝트에 적용하기
__13.5 세그멘테이션을 위한 데이터셋 업데이트
____13.5.1 매우 제한된 입력 크기를 갖는 유넷
____13.5.2 2차원 vs 3차원 데이터의 유넷 사용시 장단점
____13.5.3 실측 데이터 만들기
____13.5.4 Luna2dSegmentationDataset 구현
____13.5.5 훈련 데이터와 검증 데이터 설계
____13.5.6 TrainingLuna2dSegmentationDataset 구현
____13.5.7 GPU에서 돌리는 증강
__13.6 세그멘테이션을 위한 훈련 스크립트 업데이트
____13.6.1 세그멘테이션과 증강 모델 초기화
____13.6.2 아담 옵티마이저 사용하기
____13.6.3 다이스 손실
____13.6.4 이미지를 텐서보드에 넣기
____13.6.5 메트릭 로깅 업데이트
____13.6.6 모델 저장
__13.7 결과
__13.8 결론
__13.9 연습 문제
__13.10 핵심 요약
14장 엔드투엔드 결절 분석, 그리고 남겨진 과제
__14.1 결승선을 향하여
__14.2 검증셋 독립
__14.3 CT 세그멘테이션과 결절 후보 분류 연결
____14.3.1 세그멘테이션
____14.3.2 복셀을 그룹화하여 결절 후보로 만들기
____14.3.3 결절을 찾았나? 거짓 양성을 줄이기 위한 분류
__14.4 정량적인 검증
__14.5 악성 예측
____14.5.1 악성 정보 습득
____14.5.2 AUC 베이스라인: 직경으로 분류하기
____14.5.3 이전 가중치의 재활용: 미세 튜닝
____14.5.4 텐서보드에서의 더 많은 출력
__14.6 진단을 통해 보게되는 것
____14.6.1 훈련셋, 검증셋, 테스트셋
__14.7 다음 단계는? 더 많은 데이터와 영감이 필요하다
____14.7.1 과적합 방지: 더 나은 정규화
____14.7.2 정제된 훈련 데이터
____14.7.3 결과 비교와 리서치 논문
__14.8 결론
____14.8.1 커튼 뒤에서
__14.9 연습 문제
__14.10 핵심 요약
[3부] 드디어, 배포
15장 제품으로 배포하기
__15.1 파이토치 모델 서빙
____15.1.1 플라스크에 들어간 모델
____15.1.2 배포 시 바라는 점
____15.1.3 배치 요청
__15.2 모델 내보내기
____15.2.1 ONNX로 파이토치를 넘어서는 호환성 확보
____15.2.2 파이토치로 내보내기: 추적
____15.2.3 추적된 모델로 만든 서버
__15.3 파이토치 JIT 동작
____15.3.1 전통적인 파이썬/파이토치를 넘어서기
____15.3.2 인터페이스와 백엔드 관점에서의 파이토치
____15.3.3 토치스크립트
____15.3.4 추적 가능하도록 토치스크립트로 만들기
__15.4 LibTorch: C++ 파이토치
____15.4.1 JIT로 처리된 모델을 C++로 실행하기
____15.4.2 시작부터 C++: C++ API
__15.5 모바일
____15.5.1 효율성 개선: 모델 설계와 양자화
__15.6 최근 기술: 파이토치 모델 엔터프라이즈 서빙
__15.7 결론
__15.8 연습 문제
__15.9 핵심 요약
'딥러닝' 카테고리의 다른 글
LLM 평가 (0) | 2024.03.12 |
---|---|
modeling 없이 chatGPT를 만드는 방법 (0) | 2024.02.20 |
Gen AI 소개 (1) | 2024.01.06 |
chatGPT4 using open ai (0) | 2023.12.31 |
u-net (0) | 2023.12.30 |