월 22,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
학습에 대해 여쭈어봅니다.
강의 마지막 코드를 실행한 결과입니다. 현재 loss가 0.90 이고 accuracy가 0.86인데 이렇게 loss가 높아도 되는건가요?? 제가 손실함수가 무조건 낮아야만 좋다고 생각해서 잘 이해를 못하는 거 같습니다,,,
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
활성화 함수 질문드립니다.
활성화 함수 ReLu를 두번 쓰셨는데 특별히 이유가 있나요? 이론(?) 수업 때 그림을 보면 활성화 함수가 하나 밖에 없는데 만약에 활성화 함수를 연속되게 쓰게 되면 얻게 되는 이점이 무엇이며, 언제 활성화함수를 연속되게 쓰는지 궁금합니다.
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
안녕하세요, 질문이 있어서 글 올립니다!
안녕하세요! CNN 강의 잘 듣고 있습니다 :) 강의를 들으며 하나 문득 궁금한게 생겨서 질문 남깁니다. Xception 파트의 경우, pre-trained된 모델을 가져오는 것이라 하셨는데, 그러면 해당 pre-trained된 모델은 ImageNet 기반으로 사전 훈련된 것인가요?
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
안녕하세요 tf.train 모듈을 최근에도 사용하나요?
안녕하세요 TF 코드를 보다가 tf.train,CheckpointManager라는 tf.train 모듈 함수를 사용하는 경우를 발견했는데 tf.train 모듈이 따로 있는 이유와 최근에 keras가 들어오면서도 사용하게 되는지 궁금합니다
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
Model API과 Keras.Application API input_tensor와의 동작 관계에 대해서 궁금합니다
안녕하세요. 토이 프로젝트로 이미지 안의 text를 감지하는 모델 중 하나인 EAST에 대해서 코드 수행을 하려고 했는데 누군가 짜놓은 코드 기반으로 하다보니, 코드 내부에서 모델 구성하는 부분에서 궁금한 점이 있어서요! 모델의 시작은 resnet50 입력부터 시작하는 것 같습니다. 실제 summary에서도 그렇게 나오고, 이 출력은 Unet 기반으로 피처를 concat 하는 형태로 가져가서 마지막에 regression을 하게 됩니다 모델 resnet50 입력에 input_tensor 파라미터를 통해서 input_image라고 지정을 하게 되어서 shape는 아래 캡쳐한 것처럼 (None, None, None, 3)라고 나온 것 같습니다 그런데 코드 마지막에 최종 모델 API에서는 입력에 overly_small_text_region_training_mask, text_region_boundary_training_mask, target_score_map 을 추가로 지정하는데, 해당 입력 텐서 3개는 전혀 모델 입력으로 들어가지 않는 것 아닌가요? 감사합니다 class EAST_model: def __init__(self, input_size=512): input_image = Input(shape=(None, None, 3), name='input_image') overly_small_text_region_training_mask = Input(shape=(None, None, 1), name='overly_small_text_region_training_mask') text_region_boundary_training_mask = Input(shape=(None, None, 1), name='text_region_boundary_training_mask') target_score_map = Input(shape=(None, None, 1), name='target_score_map') resnet = ResNet50(input_tensor=input_image, weights='imagenet', include_top=False, pooling=None) # print(resnet.summary()) x = resnet.get_layer('conv5_block3_out').output x = Lambda(resize_bilinear, name='resize_1')(x) x = concatenate([x, resnet.get_layer('conv4_block6_out').output], axis=3) x = Conv2D(128, (1, 1), padding='same', kernel_regularizer=regularizers.l2(1e-5))(x) x = BatchNormalization(momentum=0.997, epsilon=1e-5, scale=True)(x) x = Activation('relu')(x) x = Conv2D(128, (3, 3), padding='same', kernel_regularizer=regularizers.l2(1e-5))(x) x = BatchNormalization(momentum=0.997, epsilon=1e-5, scale=True)(x) x = Activation('relu')(x) x = Lambda(resize_bilinear, name='resize_2')(x) x = concatenate([x, resnet.get_layer('conv3_block4_out').output], axis=3) x = Conv2D(64, (1, 1), padding='same', kernel_regularizer=regularizers.l2(1e-5))(x) x = BatchNormalization(momentum=0.997, epsilon=1e-5, scale=True)(x) x = Activation('relu')(x) x = Conv2D(64, (3, 3), padding='same', kernel_regularizer=regularizers.l2(1e-5))(x) x = BatchNormalization(momentum=0.997, epsilon=1e-5, scale=True)(x) x = Activation('relu')(x) x = Lambda(resize_bilinear, name='resize_3')(x) #x = concatenate([x, ZeroPadding2D(((1, 0),(1, 0)))(resnet.get_layer('conv2_block3_out').output)], axis=3) x = concatenate([x, resnet.get_layer('conv2_block3_out').output], axis=3) x = Conv2D(32, (1, 1), padding='same', kernel_regularizer=regularizers.l2(1e-5))(x) x = BatchNormalization(momentum=0.997, epsilon=1e-5, scale=True)(x) x = Activation('relu')(x) x = Conv2D(32, (3, 3), padding='same', kernel_regularizer=regularizers.l2(1e-5))(x) x = BatchNormalization(momentum=0.997, epsilon=1e-5, scale=True)(x) x = Activation('relu')(x) x = Conv2D(32, (3, 3), padding='same', kernel_regularizer=regularizers.l2(1e-5))(x) x = BatchNormalization(momentum=0.997, epsilon=1e-5, scale=True)(x) x = Activation('relu')(x) pred_score_map = Conv2D(1, (1, 1), activation=tf.nn.sigmoid, name='pred_score_map')(x) rbox_geo_map = Conv2D(4, (1, 1), activation=tf.nn.sigmoid, name='rbox_geo_map')(x) rbox_geo_map = Lambda(lambda x: x * input_size)(rbox_geo_map) angle_map = Conv2D(1, (1, 1), activation=tf.nn.sigmoid, name='rbox_angle_map')(x) angle_map = Lambda(lambda x: (x - 0.5) * np.pi / 2)(angle_map) pred_geo_map = concatenate([rbox_geo_map, angle_map], axis=3, name='pred_geo_map') model = Model(inputs=[input_image, overly_small_text_region_training_mask, text_region_boundary_training_mask, target_score_map], outputs=[pred_score_map, pred_geo_map])
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
Weight Initialization 강의 관련 질문드립니다.
Xavier Initialization과 He Initialization을 학습한 후, he_normal을 실습하는 시간이 있었습니다. 그런데, 해당 실습 과정에서 Conv2D Layer에만 he_normal을 적용하였고, Dense Layer에는 그대로 glorot_uniform이 사용되었음을 확인할 수 있었습니다. 마지막 출력 때에는 sigmoid가 사용되었으니 glorot_uniform을 그대로 사용하는 것에 큰 문제를 느끼지 못 하였으나, Flatten Layer 이후에 적용된 Dense Layer는 ReLU를 사용함에도 왜 kernel_initializer를 he_normal로 바꾸지 않았는지 궁금합니다. Dense Layer에도 동일하게 kernel_initializer 변수가 있는 것으로 알고 있는데, Conv2D Layer만 kernel_initializer를 변경하신 이유가 따로 있을까요? 좋은 강의를 제공해주셔서 감사합니다.
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
이 경우에는 어떻게 하는것이 좋을까요..
안녕하세요 선생님. 강의를 통하여 많이 배우고 제 프로젝트에 적용해 보는 과정에서 문제가 있어서, 여러 방법으로 해결하려고 노력하는 중이지만 차도가 없어 여쭤보고자 질문 글을 남깁니다.. 제가 하고자 하는 테스크는 건축가 별로 건물 이미지를 모아서 classification하는 CNN모델입니다. 건축가 수는 40명 정도가 되며 각 건축가마다 최소300 최대 1200개 정도의 이미지를 가지고 있으며 보통 400~600개의 이미지를 각각의 클래스가 가지고 있으며 토탈 이미지의 합은 3만개 정도입니다. 이미지의 크기와 비율이 다 제각각으로 달라서 제가 선택한 pre-processing방법은 albumentations을 이용했는데요. 먼저 타겟 크기를 정하고 (512로 예를 들겠습니다) SmallestMaxSize로 작은 축을 기준으로 512에 맞춥니다. (1000,600) 사이즈의 인풋이 들어온다면 작은축인 600이 512로 바뀌고 비율에 맞춰서 1000도 (512/600)*1000으로 사이즈를 바꿔준다음 CenterCrop으로 512*512사이즈를 맞춰줬습니다. 이 방법을 통하여 전혀 다른 사이즈와 비율의 이미지들을 어느정도 일괄적으로 제가 원하는 타겟에 맞게 설정하였고 데이터셋의 특성상 흑백으로 된 사진들이 종종 있어서 ToGray로 20%만 흑백으로 바뀌도록, HoriozntalFlip은 30%정도로 설정해주었습니다. 트레이닝셋은 위의 augmentation을 진행해주었고, 검증셋은 위에서 horizontal flip만 뺴고 적용해주었습니다. (사실 여기엔... 큰 문제가 있을 것 같진 않아 보이는데.. ) 원본 크기는 다양하고 데이터셋의 특성상 1024x1024정도의 사이즈로 해보고 싶었지만 gtx1080을 쓰고 있는 이상 256정도로 타협하고 테스트를 진행했습니다. 다음 강좌에서 쓰였던 CNN코드를 거의 그대로 사용하여서 학습을 진행하였고, resnet, xception, efficientnetb0, b3정도를 써서 학습을 진행해보았는데 공통적으로 val_acc가 특정기준 이상으로 올라가지 않습니다. (공통적인 특징으로는 트레이닝은 계속 되지만 val_acc가 40~50중반 쯤에서 멈추고 val_loss가 좋아지지는 않는데 val_acc는 50정도까지는 올라가는 현상을 보입니다.. 이걸 일반화를 못시키고 있다고 볼 수도 있을것 같고.. val_acc가 올라가는걸 봐선 정답을 맞추긴 하는데 val_loss가 안올라가는걸봐선 정답을 맞추는데 특정이미지들은 계속 틀려서 loss가 안올라가는 것 같네요...) 이 상황에서 해상도가 문제일 수도 있을 것 같아서 512로 변경을 하였는데 시간이 너무 오래 걸려서 데이터셋에서 5천개의 표본을 랜덤셔플로 추출하여 트레이닝을 다시 진행해보았는데, 비슷한 결과가 계속 나오네요.. (아래 첨부 이미지는 부분표분으로 512사이즈의 결과입니다. ) 이 경우 선생님께서 보시기에는 어떤 문제점이 있다고 느끼시는지 궁금합니다... 제 생각에는 이미지셋 자체에 문제가 있는 것 같은데, 첫번째로 다양한 스케일의 사진들이 있습니다. 멀리서 찍은 사진과 가까이서 찍은 사진들이 있어서 그런 부분을 잘 인지를 못하고 있는 것이 아닐까..하는 생각이 들고, 두번째는 (제 생각에는 이게 가능성이 높아보이네요..) 외부 건물 사진과 인테리어 사진이 데이터셋에 함께 들어가 있는데 (아무래도 외부 사진이 많습니다. )여기서 내부 사진을 제대로 못 걸러내고 있다거나...라는 생각이 듭니다. 그런데 val_loss의 개선이 크지 않는걸로 봐선 이것도 아닌것 같고....... (아래 이미지는 3만개 이미지중 5천개만 랜덤추출하여 512사이즈로 진행해본것입니다. efficient3를 사용하였는데, 3만개에 256사이즈로 진행해도 비슷한 트렌드의 결과가 나오네요...) 이것은 풀데이터셋으로 256사이즈에서 진행해본것입니다. 위의 트레이닝은 배치사이즈4였는데 이건 16인가 8인가로... 조금 더 큰 배치사이즈를 사용했습니다.
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
안녕하세요 vit가 cnn을 대체하게 되는 것인가요?
안녕하세요. 연구를 한다기 보다는, 개인적으로 이미지처리 kaggle 코드를 볼 때 상위코드가 최근에는 VIT 기술을 적용한 것인데, 이것이 자연어처리 쪽에 사용하는 transformer attentiton 기술을 가져와서 사용하게 되는군요. 자연어처리 쪽은 딥러닝 기초 때 RNN만 간단히 본 것이라, transformer 쪽은 잘 몰라서요 최근에 SOTA와 많이 근접한 VIT가 CNN을 대체할 수 있나요? 혹시 이는 추후 강의에서 언급하실 계획인가요? 감사합니다
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
코렙 질문
삭제된 글입니다
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
검증세트 질문드립니다.
안녕하세요 교수님을 통해서 머신러닝을 배우고 컴퓨터 비전에 관심이 생겨서 교수님의 컴퓨터 비전강의를 듣기 전에 이번 강좌를 듣게 되었습니다. 머신러닝에서 검증 데이터 세트를 만들때는 train_test_split이 아니라 cross_val_score, kfold 등을 사용했던 것으로 기억하고 있습니다. 그래서인지 검증세트에서부터 이해가 잘되지 않습니다 . 제가 이해한 것을 말씀드리면, OnehotEncoding으로 전처리를 한 다음, train_test_split으로 학습용/ 테스트용 데이터를 만드는 것이라고 이해했습니다.
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
optimizer의 Local minimum 탈출에 관한 질문
강의 내용에서 optimizer가 다양한 방식(momentum , AdaGrad 등)을 통해 Local minima 문제를 해결한다는 의미로 이해하였는데, 그림은 Global minima가 아닌 Local minima로 향하기 위해 다양한 방식이 이용된 것처럼 표현되어 질문드립니다. 1. 노란색 선이 의미하는 바가 궁금합니다. 아래 그림의 의미가 노란색 선(타원)이 Local minimum을 의미하고,Local minum을 탈출하여 가운데 global minum에 도달하여 최적화된다는 의미인가요? 2. 각 축의 의미가 궁금합니다. Y축이 error, x축이 진행 순서(t) 일까요? ㄴ
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
Augmentation 관련
안녕하세요. 선생님! 늘 좋은 강의 만들어주셔서 열심히 배워가고 있습니다! 너무너무 감사합니다..^^ Data Augmentation 과정 중에 질문이 있는데요. Sequence를 상속받아 Albumentation으로 이미지 데이터를 변형할 경우, 확률 파라미터에 비례해서 원본이 학습이 되지 않을 경우도 있게 될 것 같은데 모델이 원본을 학습하지 않게 되면 조금 손해 보는 면도 있지 않을까 해서요.. 저는 원본에 추가해서 Augmentaion 된 데이터들이 학습되는걸로 예상을 했었거든요.. 그리고 또다른 질문이 있는데, Dog Breed 모델성능 올리기 예제에서 EfficientNet을 사용하신 이유가 있으실까요? 저는 ResNet이나 Inception 같은 것들도 실험해 보고 싶은데, 혹시 경험적으로 성능이 안나온다거나 하는 이유가 있으신지 궁금합니다..^^ 감사합니다!
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
Local Gradient 와 Local Stream은 같은말인가요?
이전 강의에서 Local Gradient 에 대한 설명이 있었는데, 현 강의에서 설명하실때 Local Stream으로 말씀하셔서 두개가 같은 의미인 것 같긴하지만 확신이 없어서 질문드립니다!
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
텐서플로우 로컬 gpu 사용에 대해서 궁금합니다
안녕하세요. 개인 gpu에서 tf2를 동작시키는데 메모리가 24기가인 그래픽카드입니다. 그런데 모델 훈련 때 gpu를 23기가 근처로 점유하는데, 이를 배치를 낮춰도 아래와 같이 점유하는데 또 따로 보통 설정을 해야 되나요? 아니면 기본적으로 이렇게 수행되는 것인가요? 감사합니다
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
여러 샘플마다의 데이터 편차를 수학적으로 정규화할 수 있나요?
안녕하세요 https://www.inflearn.com/questions/231229 이전에 남긴 질문에서 내용을 보완해서 남겨봤습니다 이상 탐지 기술에 사용한 것은 위 논문과 같으며 https://arxiv.org/abs/2011.08785 결론적으로는 pretrained 모델을 통과한 피처맵 레이어를 3개를 뽑습니다. 그리고 3개의 레이어는 여러 개의 필터가 있으니, 여러 개가 concat한 상황에서 여기서 랜덤하게 뽑고, 뽑은 것에 대해서 마할노비스 거리를 구해서 결국엔 score map이라는 것을 구하게 됩니다 추론 단계에서 똑같이 테스트 이미지에 대해서 score map을 구하고 훈련에서 구한 score map과 비교해 편차가 있는 것에 대해서 이상탐지를 찾아내는 과정입니다 그런데 이게 클래스 하나씩 테스트하면 잘 동작을 하는데, 만일 여러 클래스를 한 번에 입력으로 넣어서 score_map을 구하게 되면 기존 결과를 보여드렸듯이 나오게 됩니다. 즉, 클래스마다 score_map 평균이 다르게 됩니다. 물론 해결방법이 없으면 score_map을 원론적으로 고쳐야 하는데, 지금은 후처리가 가능하게끔 생각해보고 싶습니다 문제점을 요약하면, 각 스코어가 대략적으로 저렇게 클래스마다 분포되어 있습니다 그런데, 이를 표준화나 정규화를 하면, 예를 들어 표준화를 하면 제가 기대했던 것은 평균이 0으로 오고, threshold를 구할 수 있을 것이라고 예상했는데, 표준화를 구하는 식에 편차가 들어가 있다보니까 서로의 클래스 범위가 편차가 다르다보니 표준화를 해도 이게 적용이 되어서 맨 마지막 사진과 같이 크게 의미가 없어져서요 혹시 클래스마다 픽셀간의 편차를 같게 해주는 방법이 있을까요? 내용이 부족하면 더 추가해보겠습니다
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
데이터프레임 axis 방향이 헷갈리네요
안녕하세요. 마지막 잎 경진대회에서 사용했던 apply 함수인데 여기서, train_df의 shape이 (행, 열)인데, 저는 개인적으로 axis=0이면 행 방향마다 데이터를 추출할 줄 알았는데, 그 반대더군요. 어떻게 구분하게 되나요? 헷갈리네요 def preprocessing(x): if x['healthy'] == 1: return 'healthy' elif x['multiple_diseases'] == 1: return 'multiple_diseases' elif x['rust'] == 1: return 'rust' elif x['scab'] == 1: return 'scab' else: return 'None' train_df['label'] = train_df.apply(lambda x : preprocessing(x), axis=1) train_df
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
val accuracy 질문입니다.
선생님 안녕하세요. 모델을 학습하고 show_history로 변화를 확인해보니까 train accuracy보다 valid accuracy가 더 높은 경우가 있습니다. 개인 다른 공부를 하면서도 valid 데이터에서 더 높은 경우가 나타나는 것을 확인할 수 있었는데 이런 경우는 괜찮은 것일까요?
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
섹션3에서 fashion-mnist 데이터셋이 로드되지 않습니다.
해당 강의에서 다음 코드를 수행하였습니다. from tensorflow.keras.datasets import fashion_mnist # 전체 6만개 데이터 중, 5만개는 학습 데이터용, 1만개는 테스트 데이터용으로 분리 (train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data() 하지만 아래와 같은 에러(exception) 이 발생하였고, 다음 셀 역시 수행되지 않습니다. 이런 경우 어떻게 대처해야할지 알려주시면 감사하겠습니다. --------------------------------------------------------------------------- gaierror Traceback (most recent call last) /opt/conda/lib/python3.7/urllib/request.py in do_open(self, http_class, req, **http_conn_args) 1349 h.request(req.get_method(), req.selector, req.data, headers, -> 1350 encode_chunked=req.has_header('Transfer-encoding')) 1351 except OSError as err: # timeout error /opt/conda/lib/python3.7/http/client.py in request(self, method, url, body, headers, encode_chunked) 1276 """Send a complete request to the server.""" -> 1277 self._send_request(method, url, body, headers, encode_chunked) 1278 /opt/conda/lib/python3.7/http/client.py in _send_request(self, method, url, body, headers, encode_chunked) 1322 body = _encode(body, 'body') -> 1323 self.endheaders(body, encode_chunked=encode_chunked) 1324 /opt/conda/lib/python3.7/http/client.py in endheaders(self, message_body, encode_chunked) 1271 raise CannotSendHeader() -> 1272 self._send_output(message_body, encode_chunked=encode_chunked) 1273 /opt/conda/lib/python3.7/http/client.py in _send_output(self, message_body, encode_chunked) 1031 del self._buffer[:] -> 1032 self.send(msg) 1033 /opt/conda/lib/python3.7/http/client.py in send(self, data) 971 if self.auto_open: --> 972 self.connect() 973 else: /opt/conda/lib/python3.7/http/client.py in connect(self) 1438 -> 1439 super().connect() 1440 /opt/conda/lib/python3.7/http/client.py in connect(self) 943 self.sock = self._create_connection( --> 944 (self.host,self.port), self.timeout, self.source_address) 945 self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) /opt/conda/lib/python3.7/socket.py in create_connection(address, timeout, source_address) 706 err = None --> 707 for res in getaddrinfo(host, port, 0, SOCK_STREAM): 708 af, socktype, proto, canonname, sa = res /opt/conda/lib/python3.7/socket.py in getaddrinfo(host, port, family, type, proto, flags) 751 addrlist = [] --> 752 for res in _socket.getaddrinfo(host, port, family, type, proto, flags): 753 af, socktype, proto, canonname, sa = res gaierror: [Errno -3] Temporary failure in name resolution During handling of the above exception, another exception occurred: URLError Traceback (most recent call last) /opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/utils/data_utils.py in get_file(fname, origin, untar, md5_hash, file_hash, cache_subdir, hash_algorithm, extract, archive_format, cache_dir) 274 try: --> 275 urlretrieve(origin, fpath, dl_progress) 276 except HTTPError as e: /opt/conda/lib/python3.7/urllib/request.py in urlretrieve(url, filename, reporthook, data) 246 --> 247 with contextlib.closing(urlopen(url, data)) as fp: 248 headers = fp.info() /opt/conda/lib/python3.7/urllib/request.py in urlopen(url, data, timeout, cafile, capath, cadefault, context) 221 opener = _opener --> 222 return opener.open(url, data, timeout) 223 /opt/conda/lib/python3.7/urllib/request.py in open(self, fullurl, data, timeout) 524 --> 525 response = self._open(req, data) 526 /opt/conda/lib/python3.7/urllib/request.py in _open(self, req, data) 542 result = self._call_chain(self.handle_open, protocol, protocol + --> 543 '_open', req) 544 if result: /opt/conda/lib/python3.7/urllib/request.py in _call_chain(self, chain, kind, meth_name, *args) 502 func = getattr(handler, meth_name) --> 503 result = func(*args) 504 if result is not None: /opt/conda/lib/python3.7/urllib/request.py in https_open(self, req) 1392 return self.do_open(http.client.HTTPSConnection, req, -> 1393 context=self._context, check_hostname=self._check_hostname) 1394 /opt/conda/lib/python3.7/urllib/request.py in do_open(self, http_class, req, **http_conn_args) 1351 except OSError as err: # timeout error -> 1352 raise URLError(err) 1353 r = h.getresponse() URLError: <urlopen error [Errno -3] Temporary failure in name resolution> During handling of the above exception, another exception occurred: Exception Traceback (most recent call last) <ipython-input-26-8cfb83a588da> in <module> 3 4 # 전체 6만개 데이터 중, 5만개는 학습 데이터용, 1만개는 테스트 데이터용으로 분리 ----> 5 (train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data() 6 7 # image size는 28x28의 grayscale 2차원 데이터 /opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/datasets/fashion_mnist.py in load_data() 73 paths = [] 74 for fname in files: ---> 75 paths.append(get_file(fname, origin=base + fname, cache_subdir=dirname)) 76 77 with gzip.open(paths[0], 'rb') as lbpath: /opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/utils/data_utils.py in get_file(fname, origin, untar, md5_hash, file_hash, cache_subdir, hash_algorithm, extract, archive_format, cache_dir) 277 raise Exception(error_msg.format(origin, e.code, e.msg)) 278 except URLError as e: --> 279 raise Exception(error_msg.format(origin, e.errno, e.reason)) 280 except (Exception, KeyboardInterrupt) as e: 281 if os.path.exists(fpath): Exception: URL fetch failure on https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz: None -- [Errno -3] Temporary failure in name resolution
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
iteration 부분
iteration 설명하실 때 iteration이 데이터셋 전체를 반복하는 것도 iteration, 데이터셋 내부의 mini-batch를 학습하는 것도 iteration이라고 설명하셨는데요 데이터셋 전체를 반복하는 iteration epoch이랑 같은 개념인가요?
- 미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
backbone 질문
선생님 안녕하세요. 수업을 듣다가 궁금한게 생겨서 여기 강의에서 질문하는게 맞지 않을까 해서 여기에 질문합니다. 1. backbone, neck, head? 이렇게 구조가 있다는데 현재 수업에서 나오는 VGG16, ResNet50, Xception 등은 backbone에 해당하는 모델을 말하는 것일까요? 2. yolo, SSD, RetinaNet을 일컷는 모델이라는 말은 backbone, neck, head를 다 합쳐놓은 모델이라고 부르는 것이겠쬬?? 3. 그렇다면 yolo나 RetinaNet의 backbone을 저희가 임의로 바꿔 사용해도 가능한 것일까요? (원래 기존 것을 사용하면 더 좋겠지만) 4. 이렇게 backbone 모델 등을 바꾸는 것을 Fine tuning이라고 하나용? 아아.. 마지막으로 VGG16의 하이퍼파라미터? learning rate나 가중치 초기화 등 이러한 부분들은 수업에서 처럼 Function으로 사용하면 튜닝이 불가능한 것일까요? 아직 체계가 잘 안 잡혀있따보니..ㅎㅎ 헷갈리는 부분들을 많이 질문하는 것 같습니다. . 그래도 이렇게 질문할 수 있는 곳이 있어 너무 좋습니다!!