묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
활성화 함수에 대한 전반적인 질문 드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 권철민 선생님 안녕하세요, 딥러닝 cnn 완벽 기초 강의를 모두 수강 하고 복습을 하던 중에, 활성화 함수의 전반적인 개념, 특히 ReLu 함수에 대해 질문이 있습니다. 우선 활성화 함수가 필요한 이유는 모델의 복잡도를 올리기 위해서라고 이해했습니다. 단순 퍼셉트론에서 XOR 문제를 해결할 수 없었던 문제를 해결하기 위해 MLP가 등장했고, 여기에서 step function이 활성화 함수로 사용되어 이전 층의 결과값을 함수에 집어 넣어 다음 층으로 전달하는 역할을 맡게 되었습니다. 하지만 MLP를 넘어 더 많은 히든 레이어를 쌓아 올리는 DNN의 경우, 선형 함수의 특성상 이를 여러번 겹쳐서 쌓아 올려도 결국에는 하나의 선형 함수로 표현할 수 있기 때문에 복잡도를 올리기 위해 레이어를 더 쌓는 의미가 없다고 이해했습니다.(물론 이렇게 쌓을 경우 레이어마다 가중치가 생기기 때문에 아예 의미가 없다고는 할 수 없겠으나, 모델 자체의 복잡도를 올리기 위한 목적에는 부합하지 않는다고 생각하고 있습니다). 단순한 퍼셉트론을 넘어 다층 퍼셉트론에서는 기존의 단층 퍼셉트론만을 활용했을 때는 풀 수 없었던 복잡도의 문제 해결이 가능해졌지만, 동일한 방법으로는 아무리 레이어를 쌓아도 더욱 복잡한 문제는 풀 수 없었습니다. 때문에, 더욱 복잡한 문제를 풀기 위해서 모델의 복잡도를 올리기 위해서는 선형 활성화 함수를 여러개 사용하여 쌓아도 결국 하나의 레이어를 사용하여 나타낼 수 있는 상황을 막아야 하기 때문에 이와 반대로 비선형 활성화 함수를 사용한다고 이해하고 있습니다. 비선형 활성화 함수들의 예시로 시그모이드, 하이퍼볼릭 탄젠트와 같이 shape 자체가 비선형인 함수들이 각광받았는데, 작은 미분값으로 인해 깊은 네트워크로 갈수록 역전파 과정에서 발생하는 Gradient Vanishing 문제, 그리고 양극단으로 값이 모일수록 명확성이 떨어진다는 단점때문에 히든 레이어의 활성화 함수로는 더는 차용되지 않는다고 이해하고 있습니다. 이러한 기울기 소실 문제를 해결하기 위해 대부분의 은닉층에서는 활성화 함수로 ReLu함수를 사용한다고 이해하고 있는데요, 렐루 함수일 경우 ReLu(-1) + ReLu(1) != ReLu(-1 + 1)이기 때문에 비선형 함수이지만, (음의 무한대, 0] 그리고 [0, 양의 무한대) 구간에서는 선형이라고 알고 있습니다. 이를 고려한다면 ReLu 함수는 비록 전체 구간에서는 비선형 함수이지만, 대부분의 구간에서는 선형 함수인데 이러한 부분을 고려할 때 어떻게 ReLu 함수를 사용할 때 저희가 시그모이드와 같은 함수에서 기대하는 것과 같은 비선형적인 특성으로 모델의 복잡도를 올려줄 수 있는것인지 직관적으로 잘 와닿지가 않습니다. 또한, CNN 연산 적용 후 ReLu 함수를 적용하는 부분이 궁금합니다. 이미지의 특정 영역에 filter값을 곱해서 특정을 추출하는 feature extracting 과정에서 합성곱 연산의 값이 크게 나올수록 이미지의 해당 영역이 해당 필터가 추출하고자 하는 값(가로, 세로, 커브 모양 등등)을 강하게 나타내고 있다고 이해하였는데요, 그렇다면 이렇게 추출되서 생성된 새로운 feature map에 ReLu 함수를 적용하는 이유는 모델의 복잡도를 올리기 위해 비선형적인 함수를 추가하는것 뿐만 아니라 예를 들어서 가로 선을 추출하기 위한 필터를 통과했을 경우, 값이 커서 가로에 해당할 확률이 높은 부분은 그대로 유지하되, 음수로 결과가 나와 가로의 특성과는 전혀 맞지 않는 특성을 모두 0으로 만들어서 가로 특징이 없다고 정리하는 역할 또한 존재할까요? 혹시 제가 놓친 ReLu 함수를 CNN의 활성화 함수로 쓰는 이유가 있다면 지적 부탁드립니다. 이미지의 픽셀은 0~255의 값으로 구성된다고 알고 있는데 음수일 경우도 존재할까요? 만약 합성곱 연산의 결과로 음수값이 나왔다면 어떻게 해석하는지 궁금하고 또 이럴 경우 filter의 weight가 음수로 크게 설정되어 있어서 발생하는 경우인지도 궁금합니다. 그리고 CNN 모델의 진행 과정에서, 입력층과 가까운 Conv layer일수록 이미지의 edge, textile같은 low level 특징을 추출하는 것에서 출력층과 가까울수록 더욱 더 추출된 특징들을 일반화 시킨다고 이해했는데 제가 맞게 이해했을까요? 마지막으로 그렇다면 이때 각 filter마다 이미지 안에 가로, 세로, 혹은 다양한 모양들의 곡선적인 특징들이 존재하는지에 대해 추출하는 역할을 담당하게 될것이라고 예상되는데, 이렇게 필터마다 작업이 할당되는 자세한 로직이 알고싶다면 어떤 분야에 대해 더 공부해보아야 할지 추천 부탁드리겠습니다. 현재 머리속에서 너무 많은 부분들이 정리가 안되어서 글이 장황해진점 너무 죄송합니다. 혹시 제가 어떤 의도로 질문을 드린건지 잘 파악이 안되시는 부분이 있다면 풀어서 써보겠습니다. 항상 감사합니다 선생님!
-
미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
전이학습 질문이요!
강의 듣는 중 질문이 있습니다. 저는 사람을 인식하는 프로젝트를 만드는 중입니다. 제가 생각하고 있는 학습 방법의 과정은 1) 맨처음 학습=> 우수한 학습모델을 가져와서 3가지의 객체를 인식하는 데이터를 학습시킨다 (이번 강의로 감을 잡음) 2) 1에서 학습된 모델을 사용하다가 인식할 객체의 추가를 위해 1의 모델을 load후 추가로 객체의 데이터를 추가학습시킨다 (지속적으로 label을 추가 시킬수 있는 모델을 만드는것이 목적) 질문) 2번과정에서 추각 학습을 할때 추가시킬 데이터만 학습을 시키면 되는건가요? 아니면 모든 객체를 처음부터 다시 학습시켜야 하나요? => 제가 원하는 방향은 추가 데이터만 학습을 시켜도 기존에 학습시켯던 label과 추가 label을 전부 검출하는것 입니다.
-
미해결
이미지데이터 학습 후 평가 시 그래프가 튀는 경우와 정확도 산정
안녕하세요 이미지 데이터를 가지고 학습 및 평가를 하고 있습니다. 모델 별(ResNet, Inception 등) 전이학습을 하고 있고 데이터수는 Train(약 2000장), Valid(약 250장), Test(약 250장) 정도로 구성되어 있습니다. 이 때 질문을 드리고 싶은 것이 몇가지 있는데 초보라 모르는 것이 많아 문의를 드립니다. 많은 조언 부탁 드립니다. 1. 다음과 같이 Valid Accuracy나 Loss 가 위아래 편차가 굉장히 심한데 어떤것이 문제이며 무엇을 바꿔야 하는지 궁금합니다. 2. 위와 같은 경우에 Accuracy를 몇이라고 해야 하는 것일까요? 평균 or 최대값 or 최소값? 3. Keras(tensorflow)를 사용하여 수행중인데 Train, Valid 등은 API내에 예제가 많이 있는데 Test(Evaluation?)에 관한 코드는 잘 없는데, 보통 Valid 까지 수행하나요 아니면 Evaluation 까지 진행해야 하는 것일까요? 4. Keras API를 사용해서 전이학습을 진행중인데 아래와 같이 conv_base에서 include_top=False, conv_base.trainable=False로 해도 전이학습의 효과가 있는 것인지, conv_base의 특정 Layer 부터 동결 혹은 학습을 할 수 있는 방법이 있는 것인지 궁금합니다. 감사합니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
AutoML EfficientDet 모델 학습 후 Evaluation은 어떻게 진행하나요??
다른 모델 강의와 다르게 최종 Evaluation 과정이 나와있지 않아 질문드립니다. 테스트데이터도 TFRecord 형태로 변환한 뒤 tf2의 eval.py 혹은 efficientdet_keras_test.py 모듈을 사용하면 되는 것인지, AutoML EfficientDet 모델의 Evaluation 과정을 어떻게 진행하면 되는지 알고싶습니다.
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
그림 불러오기
그랩마켓이라는 이미지 불러오기가 안되네요... 어떻게 해야될까요???
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
card영역이 footer 영역을 침범하여 문의드려요
강의 뒷부분에서 나온다고 댓글 확인했는데 아직 안나와서요.. height:100%는 어디다 적용되었는지 모르겠네요
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
CVAT 설치 방안 문의
회사 내 보안 이슈 있는 이미지를 사용하려 하는데 서버형은 접속이 안되 사용이 불가합니다. 혹시 CVAT를 설치해서 외부 서버 없이 사용할 수 있는 방안이 있을까요? 감사합니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
앵커박스
계속 이해해보려고 구글링했는데 뭔가 속시원게 해답이 안나와서 한번만 더 질문하겠습니다. ㅜㅜ 지난강의에서 피처맵의 그리드포인트 마다 앵커 9개를 매핑한다고 하셨는데, 이번 강의에서 RPN 네트워크는 피처맵을 이진 분류 하기 까지 그리드포인트 매핑과정이 없어서 뭔가 연결이 잘 안되는 것 같습니다. 다른 문제는 5:50초에 40x50x9 는 그리드포인트마다 9개의 앵커박스를 나타내는 것이고, 앵커박스마다 FG인지 BG인지 판단한다고 하셨는데, 제 머리로는 1x1 컨볼루션을 하고 9output을 뽑는다는게 잘 이해가 안되는 것 같습니다. 1x1 컨볼루션은 차원의 축소를 하는 역할을 하는것인데 9가지 모양의 그리드를 어떻게 1x1 컨볼루션 40x50피처맵 포인트마다 연결을 시키는 것인지 잘 이해가 되지 않습니다...ㅜㅜ
-
해결됨[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
Ground Truth로만 학습한다는 것에 대한 질문
안녕하세요. 강의 4분 40초경부터 설명이 시작되는, Ground Truth로만 학습한다는 것이 잘 이해가 되지 않아 질문 올립니다. IOU를 구하기 위해서는 G.T값 이외의 비교 대상이 필요하다 생각하는데, class를 G.T로만 정한다는 것이 이해가 잘 안되네요.. 답변해주신다면 정말 감사하겠습니다!
-
미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
Input Image Size에 대한 질문입니다
안녕하세요 교수님 강의를 열심히 듣고 있는 학생입니다. 다른게 아니고 input image size를 왜 (224,224)를 쓰는지 궁금합니다. VGG도 그렇고 GoogleNet도 그렇고 왜 224를 쓰는 건가요? VGG논문을 다 읽어봤지만 그거에 대한 명확한 답을 찾지 못했습니다. 다양한 이미지를 crop하기 위해서 224로 설정했다는 답변을 본적은 있지만 왜 굳이 224인지는 이해하지 못했습니다. 혹시 말씀해주실 수 있을까요?
-
해결됨딥러닝 CNN 완벽 가이드 - Fundamental 편
target_size 인수에 대한 질문
안녕하세요? 항상 좋은 강의 감사드립니다. CNN 을 여러가지 소스로 공부하고 있었지만 중간중간 막히는 부분이 많았었는데, 본 강의를 들으며 하나씩 뚫리는 기분이 듭니다. ImageDataGenerator 인스턴스의 flow_from_directory 메소드 에서 사용되는 target_size 인수에 대한 질문입니다. 본 기능을 통해 variety 한 이미지 손쉽게 사이즈들을 단일 사이즈로 통일시켜서 모델에 input 시킬 수 있을 듯 한데요, 예를 들어 input 이미지가 256 X 1024 등과 같이 세로로 wide 하게 찍은 사진인 경우도 224 X224 로 짜부해서 강제로 맞추는 방법인 것으로 이해하면 되는지.. 문의드립니다. 만약 그렇다면 그 방법 자체가 agumentation 이 적용된 것과 같은 효과가 되는 것은 아닌지요..? 이미지가 왜곡되어 학습을 어렵게 한다는 측면에서는 over fit 에 유리한 부분도 있겠지만 사진의 특징을 잡아내는데 어려움을 주게 되고, 모델 성능에 한계를 주는 요인이 될 수 있지 않을까 싶어서요 아직은 잘은 모르고... 개념적으로만 들은 keyword 이지만, segmentation 과 같은 방법으로 전체 이미지 중에서도 관심을 가지는 특정 부분을 잡아낸 이후에 target_size=(224, 224) 와 같이 설정하는 방법이 예측성능 측면에서는 더 좋을 것 같기는 한데요... 제가 이해한 것이 맞을지 문의드립니다.
-
미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
학습된 가중치들에 대해 질문 드립니다.
선생님 안녕하세요, 항상 강의 잘 듣고 있습니다. 다름이 아니라, 해당 강의에서 다룬 pretrained된 모델을 기반으로 classification level만 바꾸어 훈련할 때, pretrained 되어 저희가 가져온 부분에 해당하는 가중치들은 변화하지 않고 오직 저희가 마지막에 추가한 레이어들에 속해있는 가중치들만 학습이 되는걸까요? 전이 학습을 사용할 때 이미 학습된 가중치들을 가져와서 가중치 초기화를 할 때만 이용할 수도 있다고 언급 하셨어서 이 코드에서는 어느 범위까지 미리 학습된 가중치들을 활용하셨는지 궁금합니다. 또 만약에 pretrained된 레이어에 해당하는 가중치들은 변화하지 않고 오직 저희가 새로 추가한 레이어에 해당하는 가중치들만 경사 하강법을 통해 계속 업데이트 되고 있다면, 기존 코드들에 비해 실행 시간이 훨씬 오래 걸리는 이유가 그만큼 back propagation 과정이 길기 때문이라고 이해해도 될까요? 감사합니다!
-
미해결TensorFlow 2.0으로 배우는 딥러닝 입문
ppt 12p 질문
ppt 10p, 3번째 동그라미 '따라서 컨볼루션 층의 결과로 출력되는 차원은 [W, H, K]입니다' 문장에서 [W, H, K]가 아니라 [H, W, K] 아닌가요?
-
미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
filter의 종류?는 model 생성 시 지정하지 않는건가요?
안녕하세요. 수업 듣던 중 질문이 생겨 여쭤봅니다. 앞선 강의에서 설명해주셨던 필터는 마치 사진촬영 어플의 필터처럼, 적용 시 변경된 결과물을 도출해주며, GIF 예시로도 보여주셨었는데요. (빨간 필터, 초록 필터; 커널과 피처맵 강의 中 도시 전경 이미지에 필터 적용 예시) 본 강의에서 드는 의문은 Conv2D 레이어를 만들 때, 필터 사이즈만 정하고 정작 해당 필터가 어떤 필터인지는 정하지 않는건가요? (사진 어플의 필터를 예로 들자면, 흑백 필터인지, 스케치 효과의 필터인지 등) 혹은 이후에 특정 크기로 만들어놓은 Feature Map에 각각 filter를 적용하는 과정을 추가로 거치게 되는건가요?
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
런타임 관련 질문드립니다.
from mmdet.apis import init_detector, inference_detector import mmcv 를 할때 런타임 다시 시작을 하는데 왜 그래야 하나요..? 설치를 하게 되면 바로 실행이 되어야 한다고 생각하는데, 그렇지 않아서 문의드립니다. 또한 런타임이 어떤 역할을 하는지 알려주시면 감사하겠습니다. +) 커널과 런타임은 같은 개념인가요?
-
해결됨딥러닝 CNN 완벽 가이드 - Fundamental 편
Batch Normalization Layer 의 Training parameter 이해 관련 질문
안녕하세요? 머신러닝 완벽가이드 수강하고 CNN 으로 넘어왔네요~ 요 강의 마치고 컴퓨터 vision 쪽 강의도 수강하려고 미리미리 구매해 놓았습니다. ㅎㅎ 항상 좋은 강의 감사드립니다! Batch normalization 강의를 듣고 실습을 해 보다가 세 가지 궁금한 점이 생겨서 질문 드립니다. (아래 내용 중에서 제가 잘못이해하고 있는 부분 지적해 주시면 감사드리겠습니다. ^^;;) 아래 그림과 같이 Batch Normalization 을 포함시켜서 Model Creation 했을 때 Model Summary 를 보면 Batch Normalization layer 에도 Training paramter 가 할당되는 것을 볼 수 있는데요, 1) Batch normalization layer 의 training paramter 의 갯수는 어떤 수식(?) 에 의해서 결정되는지.. 궁금합니다. 수식을 알 수 있다면 layer 에 대한 이해를 조금 더 높일 수 있을 듯 해서 질문드리고 있습니다. 2) BN 방법이 Batch 별로 Z = (X - Xbar)/S 수식을 적용해서 얻은 평균이 0이고 표준편차가 1로 scaling 이 된 데이터들을 activation function 에 input 하는 방식인 것으로 이해가 되는데요, 각 node 나 feature point 들 중 신호가 약한 부위를 끄거나 (off), 신호가 분명한 부위를 켜는 (on) 역할을 데이터 평준화를 통해 좀 더 일관성 있게 해 주는 거라고 이해하면 될지요? (강의 중 설명에서는 오히려 noise 개념으로 어려운 학습을 하게 해서 overfit을 줄이는 역할을 한다고 해서.... 사실 일반적인 ML 에서의 표준화 개념과는 상충되는 듯 해서 이해하기 쉽지 않습니다.) 요약 드리면 Batch normalization layer 가 전 후 layer 들에게 영향 주는 물리적인 역할이 무엇인지.. 에 대한 질문입니다. Conv 와 Activation 사이에 위치한다면 Conv layer 에는 영향을 주지 않을 것이고, Activation 을 통과하는 결과에만 영향을 줄 것 같아서요. 3. '표준화' 라는 개념으로 BN layer 를 이해해 보면 왠지... 각 배치별 평균 벡터와 표준편차 벡터값 (혹은 분산-공분산 행렬) 들을 저장해 놓았다가, test data 예측시 활용할 것도 같은데요.. (마치 sklearn 의 preprocessing 모듈의 StandardScaler 클래스의 fit 메소드 처럼) 다만 매 batch 별로 표본 평균 벡터와 표본 분산공분산 행렬이 계속 달라질 것일텐데, batch 가 진행되면서 해당 통계량들을 업데이트 했다가 최종적으로 업데이트 된 통계량을 test data 예측할 때 사용하게 되는 것인지요..? 요 개념이 맞다면 대략 어떤 방식으로 weight 들을 업데이트하며 학습하게 되는지.. 개념적으로라도 이해하고 싶습니다. 다른 weight 들과 마찬가지로 결국 loss 를 줄이는 방향으로 최적화 되는 weight 들인 것인지도 궁금하구요~~ (아니면 BN 의 training parameter 들은 일종의 noise 처럼 임시로 저장은 하지만 예측 시 활용이 안되는 weight 들인 것인지요? ) 감사합니다!
-
해결됨딥러닝 CNN 완벽 가이드 - Fundamental 편
권철민 교수님 모든 강의를 다 듣고 있는 학생입니다.
안녕하세요 권철민 교수님 교수님의 모든 강의를 다 듣고 있습니다. 좋은 강의 감사합니다.첫번째 질문: 딥러닝 컴퓨터 비전 완벽가이드 초기판부터 개정판까지 수강하고 있고 동시에 CNN 완벽가이드, 파이썬 머신러닝 등 수강을 하면서 저는 늘 궁금했습니다. 제가 pyqt5를 UI디자인하고 Yolov5 모델을 트레이닝하면서 실시간 영상의 결과를 DB로 받아서 알람을 주는 스마트 CCVT 시스템을 한번 구성하고 싶어서 github에서 다른 개발자가 만든 소스도 참고하고 있습니다. 혹시 교수님께서 Github에서 잘 만들어 졌다고 fork 하시거나 추천해주실 만한 실시간 영상 오브젝트 디텍션 오픈소스가 있으신지요? 두번째: 오라클 성능 분석강의도 듣고 있는데 혹시 No SQL 쪽 강의 계속은 없으신지? 위에 부분에서 오브젝트 디텍션으로 받은 결과값을 DB로 저장하여 데이터를 시각화 하는 부분을 시스템으로 확장하고 싶어서 여쭤봅니다. 새로나온 강의도 수강신청 할겸 해서 여줘봅니다. 교수님 지식을 나누어 주셔서 감사합니다.
-
미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
선생님, 질문이 있습니다.
선생님, 이번에 Kernel과 Filter 차이를 설명하셨는데, 제 이해가 맞는지 검토를 부탁드려도 될까요? 우리가 보통 color image는 R,G,B 총 3개의 (28,28,1) 이미지가 결합이 된 형태이니까 이를 묶어서 (28,28,3) 이렇게 표현을 하고 흑백 이미지의 경우에는 그냥 (28,28,1) 이렇게 표현하잖아요? 그렇게 되면 각각 Channel의 개수는 3,1이 되는 것이구요. 만일 11:54의 Conv2D 조건에서 Input이 RGB 이미지로 주어진다면, 0) 일단 공통적으로 Input (28,28,3)에 대한 Batch 크기는 논외로 여거두고, 1) kernel 정방행렬 한 개를 나눠서 생각해보면 크기는( 3,3,1) 이 되는데, channel 수에 맞추기 위해(RGB) 결국 (3,3,3)이 되는 것이고, 2) filter의 개수가 4개이기 때문에 이 (3,3,3) 크기를 갖는 kernel이 총 4개가 존재한다 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 반면 흑백 사진 (28,28,1) 의 경우 0) 공통적으로 Input (28,28,1)에 대한 Batch 크기는 논외로 여겨두고, 1) kernel 정방행렬의 크기는 일단 (3,3)으로 주어지는데 Channel 수에 맞춰야 해서 (3,3,1)이 되는 것이고, 2) filter의 수가 4개이기 때문에 (3,3,1)의 크기를 갖는 kernel이 총 4개가 존재한다 이렇게 흐름으로 나눠서 생각이 되는데 어디부터 잘못이고 어디까지 이해가 잘 되었는지 짚어주시면 감사합니다ㅜㅜ!!
-
해결됨[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
Yolo v3 Custom Dataset 결과 데이터 분석을 어떻게 해야 할 지요?
교수님 안녕하세요 . 개정되고 나서 다시 정주행 하고 있고 있습니다. 좋은 강의 감사드리고 교수님 강의들 머신러닝과 오라클 강의 또한 아주 잘 듣고 있습니다. 교수님 Yolo v3 Custom Dataset으로 학습 후 아래와 같이 텐소보드를 통한 결과 같은데 이 부분을 어떻게 해석을 하고 보완을 해야할 지 강좌 내용에는 아래와 같은 Train 에 대한 학습 Result 를 하는 내용을 아직 제가 찾지 못해서 데이터를 분석하고 이해하는 법을 알고자 이렇게 두루뭉실하게라도 여쭙니다. 감사합니다.
-
미해결
Tensorflow checkpoint 기능 활용 방법
안녕하세요 딥러닝을 구글colab을 이용하여 공부중인데 현재 이미지 학습 부분을 공부하고 있습니다. 하지만 결제를 하여도 런타임이 24시간이 한계라 훈련이 자꾸 중단되어 epoch를 전부 학습하지 못하고 있습니다! 그래서 1epoch마다 checkpoint를 저장하는 방법을 사용하여 훈련을 하고 있고, 현재 잘 저장이 되고 있습니다. 하지만 저는 항상 3/10 epoch에서 24시간이 지나 훈련이 중단 되는데 그러면 이때 3 까지 저장된 checkpoint를 불러와서 다시 4epoch부터 재 학습을 시킬수 있는방법이 궁금합니다! 검색을 해 보았지만 전부 학습이 완료된 데이터를 불러오는 예제 밖에 없어서 질문 남깁니다! 제가 사용한 코드는 아래와 같습니다. from fastai.imports import * from tensorflow.keras import datasets, layers, models, losses, Model from tensorflow import keras import tensorflow as tf from keras.layers import Dense,Dropout,Activation,Add,MaxPooling2D,Conv2D,Flatten,BatchNormalization from keras.models import Sequential from keras.preprocessing.image import ImageDataGenerator from keras import layers import seaborn as sns from keras.preprocessing import image import numpy as np import cv2 from google.colab.patches import cv2_imshow import matplotlib.pyplot as plt plt.style.use('seaborn-white') data_path = '/content/drive/MyDrive/train_val_data' train_dir = os.path.join(data_path,'train') val_dir = os.path.join(data_path,'test') classes = os.listdir(train_dir) train_datagen = tf.keras.preprocessing.image.ImageDataGenerator( width_shift_range = 0.2, height_shift_range = 0.2, zoom_range = 0.2, vertical_flip=True, rescale = 1. / 255, fill_mode='nearest') val_datagen = tf.keras.preprocessing.image.ImageDataGenerator(rescale = 1. / 255) train_generator = train_datagen.flow_from_directory( train_dir, target_size=(224,224), batch_size = 32, class_mode = 'categorical' ) val_generator = val_datagen.flow_from_directory( val_dir, target_size=(224,224), batch_size = 32, class_mode = 'categorical' ) base_model = tf.keras.applications.ResNet50(weights = 'imagenet', include_top = False, input_shape = (224,224,3)) for layer in base_model.layers: layer.trainable = False x = layers.Flatten()(base_model.output) x = layers.Dense(720, activation='relu')(x) predictions = layers.Dense(360, activation = 'softmax')(x) opt = tf.keras.optimizers.Adam(learning_rate=0.001) checkpoint_path = "/content/drive/MyDrive/training_resnet50/resnet50_cp.ckpt" checkpoint_dir = os.path.dirname(checkpoint_path) # 체크포인트 콜백 만들기 cp_callback = tf.keras.callbacks.ModelCheckpoint(checkpoint_path, save_weights_only=True, verbose=1) head_model = Model(inputs = base_model.input, outputs = predictions) head_model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy']) history = head_model.fit(train_generator, validation_data=val_generator, batch_size=32, epochs=100, callbacks = [cp_callback])