no image
Pytorch 기본기 - 4
참고 : pytorch 전이학습(Transfer Learning) 튜토리얼충분한 크기의 데이터셋을 갖추는 경우가 상대적으로 어려움이를 해결하기 위해 전이학습 사용2가지 전이학습 방법합성곱 신경망의 미세조정 방법무작위 초기화 대신에 미리 학습된 신경망을 가져와 초기화 후 학습고정 특정 추출기로써의 합성곱 신경망마지막의 완전히 연결된 계층을 제외한 모든 신경망의 가중치 고정마지막 FC는 새로운 무작위의 가중치를 갖는 계층으로 대체 학습할 데이터 불러오기75개의 검증용 이미지class는 ants, bees# 학습을 위한 데이터 증가(Augmentation)와 일반화하기# 단지 검증을 위한 일반화하기data_transforms = { 'train': transforms.Compose([ tra..
2024.07.02
no image
Pytorch 기본기 - 3
참고 : 이수안컴퓨터연구소 모델 정의 nn.Module 상속 클래스 정의nn.Module을 상속받는 클래스 정의init(): 모델에서 사용될 모듈과 활성화 함수 등을 정의forward(): 모델에서 실행되어야 하는 연산을 정의class Model(nn.Module): def __init__(self, inputs): super(Model, self).__init__() self.layer = nn.Linear(inputs, 1) self.activation = nn.Sigmoid() def forward(self, x): x = self.layer(x) x = self.activation(x) return xmodel = Model(1)print(list(model.c..
2024.07.02
no image
Pytorch 기본기 - 2
참고 : 이수안컴퓨터연구소Autograd(자동미분)torch.autograd 패키지는 Tensor의 모든 연산에 대해 _\_자동 미분** 제공이는 코드를 어떻게 작성하여 실행하느냐에 따라 역전파가 정의된다는 뜻backprop를 위해 미분값을 자동으로 계산requires_grad 속성을 True로 설정하면, 해당 텐서에서 이루어지는 모든 연산들을 추적하기 시작기록을 추적하는 것을 중단하게 하려면, .detach()를 호출하여 연산기록으로부터 분리a = torch.randn(3, 3)a = a* 3print(a)print(a.requires_grad)>> tensor([[ 3.9995, -0.8653, -3.2425], [ 3.2839, 1.6168, -2.2379], [ 1.75..
2024.07.02
no image
Pytorch 기본기 - 1
참고 : 이수안컴퓨터연구소 Pytorch페이스북이 초기 루아(Lua) 언어로 개발된 토치(Torch)를 파이썬 버전으로 개발하여 2017년도에 공개초기에 토치(Torch)는 넘파이(NumPy) 라이브러리처럼 과학 연산을 위한 라이브러리로 공개이후 GPU를 이용한 텐서 조작 및 동적 신경망 구축이 가능하도록 딥러닝 프레임워크로 발전시킴파이썬답게 만들어졌고, 유연하면서도 가속화된 계산 속도를 제공 Pytorch 모듈 구조 파이토치의 구성요소torch: 메인 네임스페이스, 텐서 등의 다양한 수학 함수가 포함torch.autograd: 자동 미분 기능을 제공하는 라이브러리torch.nn: 신경망 구축을 위한 데이터 구조나 레이어 등의 라이브러리torch.multiprocessing: 병럴처리 기능을 제공하는 라..
2024.07.02
no image
핸즈온 머신러닝 - 14
참고 : 핸즈온 머신러닝 2판 합성곱 신경망을 사용한 컴퓨터 비전지각은 간단한 문제가 아니고 이를 이해하기 위해서는 감각기관의 작동 원리를 이해해야 함함성곱 신경망(CNN)은 1980년대부터 이미지 인식 분야에 사용CNN 시각분야 뿐만 아니라 음성 인식, 자연어 처리와 같은 다른 작업에도 많이 사용됨 시각 피질 구조대뇌의 뉴런들이 시야의 일부 범위 안에 있는 시각 자극에만 반응고수준의 뉴런이 저수준 뉴런의 출력에 기반한다는 의미를 얻음위의 구조가 결과적으로 전체 시야 영역에 포함된 모든 종류의 복잡한 패턴을 감지할 수 있게 함 합성곱 층CNN의 가장 중요한 구성 요소는 합성곱 층첫 번째 합성곱 층의 뉴런은 입력 이미지의 모든 픽셀에 연결되는 것이 아니라 합성곱 층 뉴런의 수용장 안에 있는 픽셀에만 연결두..
2024.06.19
no image
핸즈온 머신러닝 - 13
참고 : 핸즈온 머신러닝 2판 텐서플로에서 데이터 적재와 전처리하기메모리 용량에 맞지 않는 아주 큰 규모의 데이터셋으로 딥러닝 시스템을 훈련해야 하는 경우가 많음다른 딥러닝 라이브러리를 사용해서는 대규모 데이터셋을 효율적으로 로드하고 전처리하도록 구현하기가 어려움텐서플로에서 멀티스레딩, 큐, 배치, 프리페치 같은 상세한 사항을 모두 처리 해줌데이터 API는 텍스트 파일, 고정 길이의 레코드를 가진 이진 파일, 텐서플로의 TFRecord 포멧을 사용하는 이진 파일에서 데이터를 읽을 수 있음해당 포멧은 길이가 다른 레코드를 지원일반적으로 프로토콜 버퍼를 담은 유연하고 효율적인 이진 포멧SQL 데이터베이스에서 읽는 기능도 지원구글 Big Query 와 같은 다양한 데이터 소스에서 읽을 수 있는 오픈소스 제공T..
2024.06.19
no image
핸즈온 머신러닝 - 12
참고 : 핸즈온 머신러닝 2판 텐서플로를 사용한 사용자 정의 모델과 훈련자신만의 손실 함수, 지표, 층, 모델, 초기화, 규제, 가중치 규제 등을 만들어 세부적으로 제어하고 싶을 때 필요텐서플로의 자동 그래프 생성 기능을 사용해 사용자 정의 모델과 훈련 알고리즘의 성능을 향상 시킬수 있는 방법 텐서플로 훝어보기이미지 분류, 자연어 처리, 추천 시스템, 시계열 예측 등과 같은 모든 종류의 머신러닝 작업 수행tensorflow 구성 이미지 가장 저수준의 tensorflow 연산은 매우 효율적인 C++ 코드로 구현대부분의 코드는 고수준 API를 사용, 하지만 더 높은 자유도가 필요하는 경우 저 수준 API를 사용해 직접 텐서를 처리 numpy처럼 텐서플로 사용하기 텐서와 연산tf.constant() 함수로..
2024.06.19
no image
핸즈온 머신러닝 - 11
참고 : 핸즈온 머신러닝 2판 심층 신경망 훈련하기그레이디언트 소실 또는 그레이디언트 폭주 문제대규모 신경망을 위한 훈련 데이터의 부족, 레이블 작업 비용 문제훈련이 극단적인 시간 소요수백만 개의 파라미터를 가진 모델은 훈련 세트에 과대적합될 위험이 존재 그레이디언트 소실과 폭주 문제경사 하강법이 하위층의 연결 가중치를 변경하지 않은 채로 훈련되어 좋은 솔루션으로 수렴하지 못하는 상태를 그레이디언트 소실그레이디언트가 점점 커져서 여러 층이 비정상적으로 큰 가중치로 갱신되어 알고리즘이 발산하는 상태를 그레이디언트 폭주일반적으로 불안정한 그레이디언트는 심층 신경망 훈련을 어렵게 만듬 글로럿과 He 초기화예측을 할 때는 정방향, 그레이디언트 역전파할 때는 역방향으로 양방향 신호가 적절하게 하는것이 그레이디언트..
2024.06.19
no image
핸즈온 머신러닝 - 10
참고 : 핸즈온 머신러닝 2판 케라스를 사용한 인공 신경망 소개뇌에 있는 생물학적 뉴런의 네트워크에서 영감을 받은 머신러닝 모델 생물학적 뉴런에서 인공 뉴런까지신경망을 훈련하기 위한 데이터가 많아짐, 인공 신경망은 규모가 크고 복잡한 문제에서 다른 머신러닝 기법보다 좋은 성능을 발휘컴퓨터 하드웨어 발전으로 대규모 신경망 훈련이 가능, 훈련 알고리즘이 향상 뉴런을 사용한 논리 연산하나 이상의 이진 입력과 이진 출력을 가지는 형태인공 뉴런은 단순히 입력이 일정 개수만큼 활성화되었을 때 출력을 생성왼쪽 첫 번째 네트워크는 항등 함수뉴런 A 가 활성화 되면 뉴런 C도 활성화, 뉴런 A가 꺼지면 뉴런 C도 꺼짐두 번째 네트워크는 논리곱 연산을 수행뉴런 A와 B 모두 활성화될 때만 뉴런 C가 활성화세 번째 네트워크..
2024.06.19