Giter Club home page Giter Club logo

2021-google-ml-bootcamp's Introduction

Google Machine Learning Bootcamp 2021

image

1. Application Quiz Answer


2. Coursera Deep Learning Specialization

  • Detail Content View

  • 수료 완료

    1. Neural Networks and Deep Learing
    • Week 1 : Introduction to Deep Learning

    • Week 2 : Neural Networks Basics

    • Week 3 : Shallow Neural Networks

    • Week 4 : Deep Neural Networks

    1. Improving Deep Neural Network : Hyperparameter Tuning, Regularization and Optimization
    • Week 1 : Practical Aspects of Deep Learning

    • Week 2 : Optimization Algorithms

    • Week 3 : Hyperparameter Tuning, Batch Normalization and Programming Frameworks

    1. Structuring Machine Learning Projects
    • Week 1 : ML Strategy(1)

    • Week 2 : ML Strategy(2)

    1. Convolutional Neural Network
    • Week 1 : Foundations of Convolutional Nerual Network

    • Week 2 : Deep Convolutional Models : Case Studies

    • Week 3 : Object Detection

    • Week 4 : Special Application : Face Recognition & Neural Style Transfer

    1. Sequencial Models
    • Week 1 : Recurrent Neural Networks

    • Week 2 : Natural Language Processing & Word Embedding

    • Week 3 : Sequence Models & Attention Mechanism

    • Week 4 : Transfer Network


3. Tensorflow Developer Certificate


4. Kaggle Project

  • Kaggle Project

    • 수료 조건 : 내 캐글 Tabular Playground Series에 노트북을 제출하거나 Competition에 참여하여 상위 25%안에 랭킹 들기

5. GCP Professional Data Engineer Certificate

(Optional) 6. Programmers Dev-Match 미술작품 분류하기

  • Repository

    • 최종 제출 일자 : 2021.09.24 금요일
    • 프로젝트 수행 기간 : 2021.09.17 ~ 2021.09.24 (총 8일)

2021-google-ml-bootcamp's People

Contributors

ryankor avatar

Stargazers

Halil İbrahim Ergül avatar  avatar  avatar Wonhyeong Seo avatar Seongjung Kwon avatar AarushiVyass avatar Shahaban Mallick avatar HyunJoo Park avatar claire avatar Sonia Park avatar Minju Kim avatar 이세민 Semin Lee avatar  avatar

Watchers

James Cloos avatar  avatar

2021-google-ml-bootcamp's Issues

강의 참고 자료 모음 (논문, 깃헙 레포, 블로그 글 등)

Lecture 1 Reference

W​eek 2:

W​eek 3:

W​eek 4:


Lecture 2 Reference

W​eek 3:


Lecture 4 Reference

W​eek 1:

W​eek 2:

W​eek 3:

W​eek 4:


Lecture 5 Reference

W​eek 1:

W​eek 2:

W​eek 4:


[Assignment Error] Course 4, Week 3: variable parameter name error in unet_model function

Error Explanation : conv_block(cblock3[0], n_filters * 8, dropout=0.3)에서 dropout이 기존의 과제 초기화 시, dropout_prob으로 표기되어 에러가 발생함.

def unet_model(input_size=(96, 128, 3), n_filters=32, n_classes=23):
    
    ...

    cblock4 = conv_block(cblock3[0], n_filters * 8, dropout=0.3) # Include a dropout_prob of 0.3 for this layer
    # Include a dropout_prob of 0.3 for this layer, and avoid the max_pooling layer
    cblock5 = conv_block(cblock4[0], n_filters * 16, dropout=0.3, max_pooling=False) 

    ...

가벼운 오타 표기로 위의 매개변수 명칭을 dropout으로 표기해주면, 해당 에러를 해결할 수 있음.

[Kaggle Project] Google ML Bootcamp 캐글 프로젝트 후보군 모음

구글 머신러닝 부트캠프 캐글 미션 수행을 위한 프로젝트 후보군 3가지

1. Titanic - Machine Learning from Disaster

사유 : 해당 프로젝트에 대해 참고할 수 있는 자료가 많고, 다른 사람의 코드로 먼저 한 번 학습 후 프로젝트를 이해하면 내 코드로 변환하는 것이 매우 용이하다.

예상 프로젝트 수행 기간 : 3일 예정

2. House Prices - Advanced Regression Techniques

사유 : 학교에서 머신러닝 프로젝트로 Beginning 프로젝트를 해봤고, 해당 프로젝트의 심화 과정으로 보인다. 마찬가지로 내 코드로 이해하고 작업하는 과정이 매우 용이해질 것으로 보인다.

예상 프로젝트 수행 기간 : 3일 예정

3. Digit Recognizer

사유 : 컴퓨터 비전 관련 프로젝트는 수행해 본 적이 없고, CNN을 활용한 프로젝트 경험을 시작 단계로 해보기 좋을 것 같아 프로젝트 후보 중 하나로 선발

예상 프로젝트 수행 기간 : 7일 예정 (CNN 학습을 제외한 사전 지식이 없는 상태)


우선 시작하는 프로젝트 후보는 이렇게 잡을 수 있을 것 같고, 이후에 위의 프로젝트들을 수행하고 나면 프로그래머스에서 제공하는 기업 실습 머신러닝 문제도 한 번 풀어보자.

생각보다 어려울 것 같다는 생각이 많이들지 않는다.

[TF Env Set in M1 Error] python 3.8.0 환경에서 scipy가 M1 맥에서 설치가 안되는 상황 & python 3.9.7에서 Tensroflow가 M1 맥에서 설치가 안되는 상황에 대한 대처

어제 저녁 -> 오늘 오전까지 윈도우의 CPU를 사용해서 딥러닝 훈련을 시켜봤고, epoch이 15번 밖에 안되고 배치 사이즈도 250 밖에 안되는데 해당 코드를 돌릴 때마다 3시간의 시간이 소요되는 말도 안되는 상황을 겪으면서 이건 도저히 시험을 볼 수 있는 환경이 아니다 싶어 결국 다시 M1 맥북으로 돌아와 환경 설정을 하는 것을 진행하게 되었다.

총 소요 시간은 8시간 남짓이고 시도한 것은 다음과 같다.

1. python 3.8.0 환경에서 다음과 같은 환경을 세팅

tensorflow==2.4.0rc
tensorflow-datasets==4.3.0
Pillow==8.2.0
pandas==1.2.4
numpy==1.19.5
scipy==1.7.0

발생한 에러 : scipy를 제외하고 모두 설치되었으나 scipy가 파이썬 3.8 버전에서 M1 맥북을 지원하지 않는 게 가장 큰 문제였다.

로제타2처럼 번역기를 사용해서 설치하는 것도 찾아봤으나 도저히 자료가 없었고, 결국 돌아온 것은 scipy는 아직 3.8 버전에서 M1 Apple Sillicon을 지원하지 않는다는 글들 뿐이었다.

여기서 문득 떠오른 게, "아니, 어차피 정확하게 텐서플로우에서 요구하는 환경만 쓰는 건 절대 아닐꺼고 파이썬 언어 버전을 높이면 설치가 되는 거 아닌가?" 싶어서 찾아보니 M1 맥에 공식적으로 scipy가 지원하기 시작하는 파이썬 버전은 3.9부터라는 것을 알게 되었다.


2. python3.9.7 환경에서 다음과 같은 환경을 세팅

tensorflow==2.5.0
tensorflow-datasets==4.3.0
Pillow==8.2.0
pandas==1.2.4
numpy==1.19.5
scipy==1.7.0

발생한 에러 : 파이썬 3.9 버전을 설치하고 파이참에서 해당 파이썬 버전으로 가상 환경을 다시 조성한 다음에 위 모듈들을 설치하니, 하나도 에러 없이 설치가 되었다.

그런데 설치만 성공했지, 정상적으로 작동한다고는 말 안했다.

텐서플로우 코드 예제를 돌려보니, illegal hardware instruction tensorflow라는 에러를 목격하게 되었다.

찾아보니 인텔 칩이 아닌 반도체 칩에서 작동 안한다는 뜻이다.

즉, 텐서플로우에서 자체적으로 번역기를 사용해서 M1 실리콘 칩을 인식해야하는 상황인 것이다.

그래서 결국 1번째 시도에서 진행했던 tensorflow 2.4.0rc를 설치하고자 했는데,,, 호환되는 버전이 3.8 이다.

scipy를 얻고, tensorflow를 버린 것이다.

이건 도저히 해결이 안되겠다 싶어서 노트북을 누구한테 빌려야되나 싶었는데, 모든 걸 포기한 상황에서 유튜브에 시험 후기를 보는데 하단의 링크를 발견하게 되었다.

(이건 신이 나를 도운 게 틀림 없다)


3. 실제 시험 환경에 대한 영상

텐서플로우 시험을 보는 과정을 담은 유튜브 영상

이 영상을 보면 텐서플로우 시험 응시부터 시험 결과물 제출까지 모든 게 다뤄지고 있다.

보면 .h5 파일을 생성해서 제출하는 방식이다.

심지어 살짝살짝 시험 문제도 보이는데 코세라에서 배운 시험 문항과 거의 동일하다.

즉, .h5 파일을 제출하고 이 모델 파일을 플러그인에서 평가하는 것이지 모듈이 모두 필요한 것은 아닌 것으로 보인다.

다시 말해, 가상 머신에서 GPU를 돌려서 모델 생성 후, .h5 파일로 저장해서 그 코드만 제출해도 된다는 뜻이다.


총평 : 이걸로 오늘 하루의 33% (8시간)를 날렸다.

덕분에 딥러닝 필수 모듈들 중에 M1 맥에서 작동하는 것과 작동 안하는 것에대해 깊이 분석해 볼 시간을 가진 것 같은데, 말이 좋아서 깊은 분석이지 나쁜 말로는 삽질 기가 막히게 한거다.

금요일 시험치를 예정인데 미리 해보길 잘했다.

아, 진짜 구글 측에서 설명 좀 잘 해놓지, 괜히 로컬에서 안해도 되는 고생만 엄청한 느낌이다.

[Memo] 인공 신경망의 학습 구조

image

이미지가 포함된 과제 링크

위 인공 신경망의 학습 과정은 다음과 같습니다.

가중치와 편향을 초기화 시킨 후 --> 인공 신경망은 입력에 대해서 순전파(forward propagation) 연산 진행 --> 순전파 연산을 통해 나온 예측값과 실제값의 오차를 손실 함수(loss function)을 통해 계산 --> 이 손실(loss)을 미분을 통해서 기울기(gradient)를 구하고 --> 이를 통해 역전파(back propagation)를 수행

인공 신경망의 학습은 오차를 최소화하는 가중치를 찾는 목적으로 순전파와 역전파를 반복하는 것을 말합니다.

[Certificate] Tensorflow Developer Certificate 준비

  • 시험 예정일 : 9월 24일

해당 시험을 빠르게 치르고 10월 15일 전에 조기 수료할 경우, GCP Data Engineer 시험 지원비까지 제공받는다.

시험은 Tensorflow in Practice 하나로 준비하면 되고, 시험이 쉽다고 하니 추석이 낀 것을 감안해서 3주내로 공부해서 마무리지어야겠다.

GCP Data Engineer가 보통 2달 정도 공부하는 시간이 필요하다고 하니, 하반기 한 번 힘차게 마무리해보자.

이전 기수 수강생 현황을 살펴보니 GCP 데이터 엔지니어 수료증 학습을 위한 문제 은행이 있다고 한다. 그걸 중심으로 살펴보면 좋을 것 같다.

  • Tensorflow-in-Practice 코세라 강의 완강
  • 텐서플로우 시험 보기 (9월 15일 예정)

Mission 1 : Coursera Deep Learning Specialization, Neural Networks and Deep Learning 수강

수강 기간 : 8월 6일 ~ 8월 16일 오전 9시 까지

수강 완료 시점이 아닌 인증서 제출까지 포함한 시간입니다.

수강 범위

1st course: Neural Networks and Deep Learning
  • Week 1. Introduction to deep learning
  • Week 2. Neural Networks Basics

수강 완료 인증 기간 : 8월 16일 오전 9시 까지 인증 양식에 제출

인증 시간을 1분이라도 넘긴 경우는 미션 실패 처리가 되니 수강하시고 바로 제출하시기 바랍니다.

파일명 : 본인이름_코세라 1주

다음 미션 안내: 8월 16일 오전 메일로 안내 혹은 권장 진도표에서 사전에 확인

[Assignment Error] Course 5, Week 1: AttributeError in music_inference_model(LSTM_cell, densor, Ty=100)

Error Explanation

AttributeError: The layer “lstm” has multiple inbound nodes, with different output shapes. Hence the notion of “output shape” is ill-defined for the layer. Use get_output_shape_at(node_index) instead.

# UNQ_C2 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)
# GRADED FUNCTION: music_inference_model

def music_inference_model(LSTM_cell, densor, Ty=100):
    """
    Uses the trained "LSTM_cell" and "densor" from model() to generate a sequence of values.
    
    Arguments:
    LSTM_cell -- the trained "LSTM_cell" from model(), Keras layer object
    densor -- the trained "densor" from model(), Keras layer object
    Ty -- integer, number of time steps to generate
    
    Returns:
    inference_model -- Keras model instance
    """
    
    # Get the shape of input values
    n_values = densor.units
    # Get the number of the hidden state vector
    n_a = LSTM_cell.units
    
    # Define the input of your model with a shape 
    x0 = Input(shape=(1, n_values))
    
    
    # Define s0, initial hidden state for the decoder LSTM
    a0 = Input(shape=(n_a,), name='a0')
    c0 = Input(shape=(n_a,), name='c0')
    a = a0
    c = c0
    x = x0

    ### START CODE HERE ###
    # Step 1: Create an empty list of "outputs" to later store your predicted values (≈1 line)
    outputs = []
    
    # Step 2: Loop over Ty and generate a value at every time step
    for t in range(Ty):
        # Step 2.A: Perform one step of LSTM_cell. Use "x", not "x0" (≈1 line)
        a, _, c = LSTM_cell(inputs=x, initial_state=[a,c])
        
        # Step 2.B: Apply Dense layer to the hidden state output of the LSTM_cell (≈1 line)
        out = densor(a)
        # Step 2.C: Append the prediction "out" to "outputs". out.shape = (None, 90) (≈1 line)
        outputs.append(out)
        
        # Step 2.D: 
        # Select the next value according to "out",
        # Set "x" to be the one-hot representation of the selected value
        # See instructions above.
        x = tf.math.argmax(out, axis= -1) # 여기서 차원 변환 에러 발생
        x = tf.one_hot(x, depth=n_values)
        # Step 2.E: 
        # Use RepeatVector(1) to convert x into a tensor with shape=(None, 1, 90)
        x = RepeatVector(1)(x)

    # Step 3: Create model instance with the correct "inputs" and "outputs" (≈1 line)
    inference_model = Model(inputs=[x0, a0, c0], outputs=outputs)
    
    ### END CODE HERE ###
    
    return inference_model

Error Solution

        x = tf.math.argmax(out, axis= -1) # 여기서 차원 변환 에러 발생
        x = tf.one_hot(x, depth=n_values)

이 2개의 코드에서 차원 변환하는 게 상당히 애먹어서 deeplearning.ai에서 수강생들이 남긴 에러를 보고 해결할 수 있게 되었다.

주어진 Tensor를 (None, 90)으로 변경하고 (axis = -1) 그 후, one hot encoding 기법으로 (None, 90,90)으로 변경한다.

최종적으로 RepeatVector(1)(x)를 사용해서 (None, 1, 90) 텐서로 변경하는데 계속 결과 값이 (90, 1, 90)이 나와서 어떤 에러인지 해멨다.

구글에 올라온 다른 사람들 주피터 노트북 답을 보고 해결하려고 했는데, 정답이 아닌 경우가 대다수였고 (특히 axis 값이 최신화되면서 답이 달랐다)

주피터 노트북 커널이 반응이 느려서 그런지 고친 값이 빨리 반영 안되서 해멘 것도 한 몫했다.

이걸로만 한 시간 잡아먹은 듯 싶다.

[Interview] 하루에 5개씩 답변 준비하는 데이터 사이언티스트 면접 질문지 모음

--> 질문지 원본 레포

Contents

공통 질문

  • 왜 해당 직군으로 지원했나요?
  • 왜 저희 회사에 지원하셨나요?
  • 해당 직군의 매력이 무엇이라고 생각하나요?
  • 해당 직군에서 본인의 장점은?
  • 해당 직군을 하면서 이루고자 하는 목표는?
  • 해당 직군을 하기 위해 어떤 노력을 했나요?
  • 왜 저희가 지원자를 뽑아야 하나요?
  • 지원자의 단점은 무엇인가요?
목차로 이동

프로젝트

  • - 데이터를 어떻게 구했나요?
  • - 해당 프로젝트에서 왜 이 알고리즘을 사용했나요?
  • - 그 알고리즘과 유사한 알고리즘이 존재하지 않나요?
  • - 해당 알고리즘의 단점은?
  • - 해당 프로젝트에서 지원자는 어떤 일을 했나요?
  • - 해당 프로젝트에서 지원자가 느낀 점은?
  • - 해당 프로젝트를 다시 진행한다고 하면 어떻게 할 것인가요?
  • - Kaggle에서 수상을 하면 데이터 분석을 잘 할까요?
목차로 이동

통계 및 수학

  • - 고유값(eigen value)와 고유벡터(eigen vector)에 대해 설명해주세요. 그리고 왜 중요할까요?
  • - 샘플링(Sampling)과 리샘플링(Resampling)에 대해 설명해주세요. 리샘플링은 무슨 장점이 있을까요?
  • - 확률 모형과 확률 변수는 무엇일까요?
  • - 누적 분포 함수와 확률 밀도 함수는 무엇일까요? 수식과 함께 표현해주세요
  • - 베르누이 분포 / 이항 분포 / 카테고리 분포 / 다항 분포 / 가우시안 정규 분포 / t 분포 / 카이제곱 분포 / F 분포 / 베타 분포 / 감마 분포 / 디리클레 분포에 대해 설명해주세요. 혹시 연관된 분포가 있다면 연관 관계를 설명해주세요
  • - 조건부 확률은 무엇일까요?
  • - 공분산과 상관계수는 무엇일까요? 수식과 함께 표현해주세요
  • - 신뢰 구간의 정의는 무엇인가요?
  • - p-value를 고객에게는 뭐라고 설명하는게 이해하기 편할까요?
  • - p-value는 요즘 시대에도 여전히 유효할까요? 언제 p-value가 실제를 호도하는 경향이 있을까요?
  • - A/B Test 등 현상 분석 및 실험 설계 상 통계적으로 유의미함의 여부를 결정하기 위한 방법에는 어떤 것이 있을까요?
  • - R square의 의미는 무엇인가요?
  • - 평균(mean)과 중앙값(median)중에 어떤 케이스에서 뭐를 써야할까요?
  • - 중심극한정리는 왜 유용한걸까요?
  • - 엔트로피(entropy)에 대해 설명해주세요. 가능하면 Information Gain도요.
  • - 요즘같은 빅데이터(?)시대에는 정규성 테스트가 의미 없다는 주장이 있습니다. 맞을까요?
  • - 어떨 때 모수적 방법론을 쓸 수 있고, 어떨 때 비모수적 방법론을 쓸 수 있나요?
  • - “likelihood”와 “probability”의 차이는 무엇일까요?
  • - 통계에서 사용되는 bootstrap의 의미는 무엇인가요.
  • - 모수가 매우 적은 (수십개 이하) 케이스의 경우 어떤 방식으로 예측 모델을 수립할 수 있을까요?
  • - 베이지안과 프리퀀티스트간의 입장차이를 설명해주실 수 있나요?
  • - 검정력(statistical power)은 무엇일까요?
  • - missing value가 있을 경우 채워야 할까요? 그 이유는 무엇인가요?
  • - 아웃라이어의 판단하는 기준은 무엇인가요?
  • - 콜센터 통화 지속 시간에 대한 데이터가 존재합니다. 이 데이터를 코드화하고 분석하는 방법에 대한 계획을 세워주세요. 이 기간의 분포가 어떻게 보일지에 대한 시나리오를 설명해주세요
  • - 출장을 위해 비행기를 타려고 합니다. 당신은 우산을 가져가야 하는지 알고 싶어 출장지에 사는 친구 3명에게 무작위로 전화를 하고 비가 오는 경우를 독립적으로 질문해주세요. 각 친구는 2/3로 진실을 말하고 1/3으로 거짓을 말합니다. 3명의 친구가 모두 "그렇습니다. 비가 내리고 있습니다"라고 말했습니다. 실제로 비가 내릴 확률은 얼마입니까?
  • - 필요한 표본의 크기를 어떻게 계산합니까?
  • - Bias를 통제하는 방법은 무엇입니까?
  • - 로그 함수는 어떤 경우 유용합니까? 사례를 들어 설명해주세요
목차로 이동

분석 일반

  • - 좋은 feature란 무엇인가요. 이 feature의 성능을 판단하기 위한 방법에는 어떤 것이 있나요?
  • - "상관관계는 인과관계를 의미하지 않는다"라는 말이 있습니다. 설명해주실 수 있나요?
  • - A/B 테스트의 장점과 단점, 그리고 단점의 경우 이를 해결하기 위한 방안에는 어떤 것이 있나요?
  • - 각 고객의 웹 행동에 대하여 실시간으로 상호작용이 가능하다고 할 때에, 이에 적용 가능한 고객 행동 및 모델에 관한 이론을 알아봅시다.
  • - 고객이 원하는 예측모형을 두가지 종류로 만들었다. 하나는 예측력이 뛰어나지만 왜 그렇게 예측했는지를 설명하기 어려운 random forest 모형이고, 또다른 하나는 예측력은 다소 떨어지나 명확하게 왜 그런지를 설명할 수 있는 sequential bayesian 모형입니다.고객에게 어떤 모형을 추천하겠습니까?
  • - 고객이 내일 어떤 상품을 구매할지 예측하는 모형을 만들어야 한다면 어떤 기법(예: SVM, Random Forest, logistic regression 등)을 사용할 것인지 정하고 이를 통계와 기계학습 지식이 전무한 실무자에게 설명해봅시다.
  • - 나만의 feature selection 방식을 설명해봅시다.
  • - 데이터 간의 유사도를 계산할 때, feature의 수가 많다면 (예: 100개 이상), 이러한 high-dimensional clustering을 어떻게 풀어야할까요?
목차로 이동

머신러닝

  • - Cross Validation은 무엇이고 어떻게 해야하나요?
  • - 회귀 / 분류시 알맞은 metric은 무엇일까요?
  • - 알고 있는 metric에 대해 설명해주세요(ex. RMSE, MAE, recall, precision ...)
  • - 정규화를 왜 해야할까요? 정규화의 방법은 무엇이 있나요?
  • - Local Minima와 Global Minima에 대해 설명해주세요.
  • - 차원의 저주에 대해 설명해주세요
  • - dimension reduction기법으로 보통 어떤 것들이 있나요?
  • - PCA는 차원 축소 기법이면서, 데이터 압축 기법이기도 하고, 노이즈 제거기법이기도 합니다. 왜 그런지 설명해주실 수 있나요?
  • - LSA, LDA, SVD 등의 약자들이 어떤 뜻이고 서로 어떤 관계를 가지는지 설명할 수 있나요?
  • - Markov Chain을 고등학생에게 설명하려면 어떤 방식이 제일 좋을까요?
  • - 텍스트 더미에서 주제를 추출해야 합니다. 어떤 방식으로 접근해 나가시겠나요?
  • - SVM은 왜 반대로 차원을 확장시키는 방식으로 동작할까요? 거기서 어떤 장점이 발생했나요?
  • - 다른 좋은 머신 러닝 대비, 오래된 기법인 나이브 베이즈(naive bayes)의 장점을 옹호해보세요.
  • - Association Rule의 Support, Confidence, Lift에 대해 설명해주세요.
  • - 최적화 기법중 Newton’s Method와 Gradient Descent 방법에 대해 알고 있나요?
  • - 머신러닝(machine)적 접근방법과 통계(statistics)적 접근방법의 둘간에 차이에 대한 견해가 있나요?
  • - 인공신경망(deep learning이전의 전통적인)이 가지는 일반적인 문제점은 무엇일까요?
  • - 지금 나오고 있는 deep learning 계열의 혁신의 근간은 무엇이라고 생각하시나요?
  • - ROC 커브에 대해 설명해주실 수 있으신가요?
  • - 여러분이 서버를 100대 가지고 있습니다. 이때 인공신경망보다 Random Forest를 써야하는 이유는 뭘까요?
  • - K-means의 대표적 의미론적 단점은 무엇인가요? (계산량 많다는것 말고)
  • - L1, L2 정규화에 대해 설명해주세요
  • - XGBoost을 아시나요? 왜 이 모델이 캐글에서 유명할까요?
  • - 앙상블 방법엔 어떤 것들이 있나요?
  • - SVM은 왜 좋을까요?
  • - feature vector란 무엇일까요?
  • - 좋은 모델의 정의는 무엇일까요?
  • - 50개의 작은 의사결정 나무는 큰 의사결정 나무보다 괜찮을까요? 왜 그렇게 생각하나요?
  • - 스팸 필터에 로지스틱 리그레션을 많이 사용하는 이유는 무엇일까요?
  • - OLS(ordinary least squre) regression의 공식은 무엇인가요?
목차로 이동

딥러닝

딥러닝 일반

  • - 딥러닝은 무엇인가요? 딥러닝과 머신러닝의 차이는?
  • - 왜 갑자기 딥러닝이 부흥했을까요?
  • - 마지막으로 읽은 논문은 무엇인가요? 설명해주세요
  • - Cost Function과 Activation Function은 무엇인가요?
  • - Tensorflow, Keras, PyTorch, Caffe, Mxnet 중 선호하는 프레임워크와 그 이유는 무엇인가요?
  • - Data Normalization은 무엇이고 왜 필요한가요?
  • - 알고있는 Activation Function에 대해 알려주세요. (Sigmoid, ReLU, LeakyReLU, Tanh 등)
  • - 오버피팅일 경우 어떻게 대처해야 할까요?
  • - 하이퍼 파라미터는 무엇인가요?
  • - Weight Initialization 방법에 대해 말해주세요. 그리고 무엇을 많이 사용하나요?
  • - 볼츠만 머신은 무엇인가요?
  • - 요즘 Sigmoid 보다 ReLU를 많이 쓰는데 그 이유는?
  • - Non-Linearity라는 말의 의미와 그 필요성은?
  • - ReLU로 어떻게 곡선 함수를 근사하나?
  • - ReLU의 문제점은?
  • - Bias는 왜 있는걸까?
  • - Gradient Descent에 대해서 쉽게 설명한다면?
  • - 왜 꼭 Gradient를 써야 할까? 그 그래프에서 가로축과 세로축 각각은 무엇인가? 실제 상황에서는 그 그래프가 어떻게 그려질까?
  • - GD 중에 때때로 Loss가 증가하는 이유는?
  • - 중학생이 이해할 수 있게 더 쉽게 설명 한다면?
  • - Back Propagation에 대해서 쉽게 설명 한다면?
  • - Local Minima 문제에도 불구하고 딥러닝이 잘 되는 이유는?
  • - GD가 Local Minima 문제를 피하는 방법은?
  • - 찾은 해가 Global Minimum인지 아닌지 알 수 있는 방법은?
  • - Training 세트와 Test 세트를 분리하는 이유는?
  • - Validation 세트가 따로 있는 이유는?
  • - Test 세트가 오염되었다는 말의 뜻은?
  • - Regularization이란 무엇인가?
  • - Batch Normalization의 효과는?
  • - Dropout의 효과는?
  • - BN 적용해서 학습 이후 실제 사용시에 주의할 점은? 코드로는?
  • - GAN에서 Generator 쪽에도 BN을 적용해도 될까?
  • - SGD, RMSprop, Adam에 대해서 아는대로 설명한다면?
  • - SGD에서 Stochastic의 의미는?
  • - 미니배치를 작게 할때의 장단점은?
  • - 모멘텀의 수식을 적어 본다면?
  • - 간단한 MNIST 분류기를 MLP+CPU 버전으로 numpy로 만든다면 몇줄일까?
  • - 어느 정도 돌아가는 녀석을 작성하기까지 몇시간 정도 걸릴까?
  • - Back Propagation은 몇줄인가?
  • - CNN으로 바꾼다면 얼마나 추가될까?
  • - 간단한 MNIST 분류기를 TF, Keras, PyTorch 등으로 작성하는데 몇시간이 필요한가?
  • - CNN이 아닌 MLP로 해도 잘 될까?
  • - 마지막 레이어 부분에 대해서 설명 한다면?
  • - 학습은 BCE loss로 하되 상황을 MSE loss로 보고 싶다면?
  • - 만약 한글 (인쇄물) OCR을 만든다면 데이터 수집은 어떻게 할 수 있을까?
  • - 딥러닝할 때 GPU를 쓰면 좋은 이유는?
  • - 학습 중인데 GPU를 100% 사용하지 않고 있다. 이유는?
  • - GPU를 두개 다 쓰고 싶다. 방법은?
  • - 학습시 필요한 GPU 메모리는 어떻게 계산하는가?
  • - TF, Keras, PyTorch 등을 사용할 때 디버깅 노하우는?
  • - 뉴럴넷의 가장 큰 단점은 무엇인가? 이를 위해 나온 One-Shot Learning은 무엇인가?
목차로 이동

컴퓨터 비전

  • - OpenCV 라이브러리만을 사용해서 이미지 뷰어(Crop, 흑백화, Zoom 등의 기능 포함)를 만들어주세요
  • - 딥러닝 발달 이전에 사물을 Detect할 때 자주 사용하던 방법은 무엇인가요?
  • - Fatser R-CNN의 장점과 단점은 무엇인가요?
  • - dlib은 무엇인가요?
  • - YOLO의 장점과 단점은 무엇인가요?
  • - 제일 좋아하는 Object Detection 알고리즘에 대해 설명하고 그 알고리즘의 장단점에 대해 알려주세요
  • - 그 이후에 나온 더 좋은 알고리즘은 무엇인가요?
  • - Average Pooling과 Max Pooling의 차이점은?
  • - Deep한 네트워크가 좋은 것일까요? 언제까지 좋을까요?
  • - Residual Network는 왜 잘될까요? Ensemble과 관련되어 있을까요?
  • - CAM(Class Activation Map)은 무엇인가요?
  • - Localization은 무엇일까요?
  • - 자율주행 자동차의 원리는 무엇일까요?
  • - Semantic Segmentation은 무엇인가요?
  • - Visual Q&A는 무엇인가요?
  • - Image Captioning은 무엇인가요?
  • - Fully Connected Layer의 기능은 무엇인가요?
  • - Neural Style은 어떻게 진행될까요?
  • - CNN에 대해서 아는대로 얘기하라
  • - CNN이 MLP보다 좋은 이유는?
  • - 어떤 CNN의 파라미터 개수를 계산해 본다면?
  • - 주어진 CNN과 똑같은 MLP를 만들 수 있나?
  • - 풀링시에 만약 Max를 사용한다면 그 이유는?
  • - 시퀀스 데이터에 CNN을 적용하는 것이 가능할까?
목차로 이동

자연어 처리

  • - One Hot 인코딩에 대해 설명해주세요
  • - POS 태깅은 무엇인가요? 가장 간단하게 POS tagger를 만드는 방법은 무엇일까요?
  • - 문장에서 "Apple"이란 단어가 과일인지 회사인지 식별하는 모델을 어떻게 훈련시킬 수 있을까요?
  • - 뉴스 기사에 인용된 텍스트의 모든 항목을 어떻게 찾을까요?
  • - 음성 인식 시스템에서 생성된 텍스트를 자동으로 수정하는 시스템을 어떻게 구축할까요?
  • - 잠재론적, 의미론적 색인은 무엇이고 어떻게 적용할 수 있을까요?
  • - 영어 텍스트를 다른 언어로 번역할 시스템을 어떻게 구축해야 할까요?
  • - 뉴스 기사를 주제별로 자동 분류하는 시스템을 어떻게 구축할까요?
  • - Stop Words는 무엇일까요? 이것을 왜 제거해야 하나요?
  • - 영화 리뷰가 긍정적인지 부정적인지 예측하기 위해 모델을 어떻게 설계하시겠나요?
  • - TF-IDF 점수는 무엇이며 어떤 경우 유용한가요?
  • - 한국어에서 많이 사용되는 사전은 무엇인가요?
  • - Regular grammar는 무엇인가요? regular expression과 무슨 차이가 있나요?
  • - RNN에 대해 설명해주세요
  • - LSTM은 왜 유용한가요?
  • - Translate 과정 Flow에 대해 설명해주세요
  • - n-gram은 무엇일까요?
  • - PageRank 알고리즘은 어떻게 작동하나요?
  • - depedency parsing란 무엇인가요?
  • - Word2Vec의 원리는?
  • - 그 그림에서 왼쪽 파라메터들을 임베딩으로 쓰는 이유는?
  • - 그 그림에서 오른쪽 파라메터들의 의미는 무엇일까?
  • - 남자와 여자가 가까울까? 남자와 자동차가 가까울까?
  • - 번역을 Unsupervised로 할 수 있을까?
목차로 이동

강화학습

  • - MDP는 무엇일까요?
  • - 가치함수는 무엇일까요? 수식으로도 표현해주세요
  • - 벨만 방정식은 무엇일까요? 수식으로도 표현해주세요
  • - 강화학습에서 다이나믹 프로그래밍은 어떤 의미를 가질까요? 한계점은 무엇이 있을까요?
  • - 몬테카를로 근사는 무엇일까요? 가치함수를 추정할 때 어떻게 사용할까요?
  • - Value-based Reinforcement Learning과 Policy based Reinforcement Learning는 무엇이고 어떤 관계를 가질까요?
  • - 강화학습이 어려운 이유는 무엇일까요? 그것을 어떤 방식으로 해결할 수 있을까요?
  • - 강화학습을 사용해 테트리스에서 고득점을 얻는 프로그램을 만드려고 합니다. 어떻게 만들어야 할까요?
목차로 이동

GAN

  • - GAN에 대해 아는대로 설명해주세요
  • - GAN의 단점은 무엇인가요?
  • - LSGAN에 대해 설명해주세요
  • - GAN이 왜 뜨고 있나요?
  • - Auto Encoder에 대해서 아는대로 얘기하라
  • - MNIST AE를 TF나 Keras등으로 만든다면 몇줄일까?
  • - MNIST에 대해서 임베딩 차원을 1로 해도 학습이 될까?
  • - 임베딩 차원을 늘렸을 때의 장단점은?
  • - AE 학습시 항상 Loss를 0으로 만들수 있을까?
  • - VAE는 무엇인가?
  • - 간단한 MNIST DCGAN을 작성한다면 TF 등으로 몇줄 정도 될까?
  • - GAN의 Loss를 적어보면?
  • - D를 학습할때 G의 Weight을 고정해야 한다. 방법은?
  • - 학습이 잘 안될때 시도해 볼 수 있는 방법들은?
목차로 이동

추천 시스템

  • - 추천 시스템에서 사용할 수 있는 거리는 무엇이 있을까요?
  • - User 베이스 추천 시스템과 Item 베이스 추천 시스템 중 단기간에 빠른 효율을 낼 수 있는 것은 무엇일까요?
  • - 성능 평가를 위해 어떤 지표를 사용할까요?
  • - Explicit Feedback과 Implicit Feedback은 무엇일까요? Impicit Feedback을 어떻게 Explicit하게 바꿀 수 있을까요?
  • - Matrix Factorization은 무엇인가요? 해당 알고리즘의 장점과 단점은?
  • - SQL으로 조회 기반 Best, 구매 기반 Best, 카테고리별 Best를 구하는 쿼리를 작성해주세요
  • - 추천 시스템에서 KNN 알고리즘을 활용할 수 있을까요?
  • - 유저가 10만명, 아이템이 100만개 있습니다. 이 경우 추천 시스템을 어떻게 구성하시겠습니까?
  • - 딥러닝을 활용한 추천 시스템의 사례를 알려주세요
  • - 두 추천엔진간의 성능 비교는 어떤 지표와 방법으로 할 수 있을까요? 검색엔진에서 쓰던 방법을 그대로 쓰면 될까요? 안될까요?
  • - Collaborative Filtering에 대해 설명한다면?
  • - Cold Start의 경우엔 어떻게 추천해줘야 할까요?
  • - 고객사들은 기존 추천서비스에 대한 의문이 있습니다. 주로 매출이 실제 오르는가 하는 것인데, 이를 검증하기 위한 방법에는 어떤 것이 있을까요? 위 관점에서 우리 서비스의 성능을 고객에게 명확하게 인지시키기 위한 방법을 생각해봅시다.
목차로 이동

데이터베이스

  • - PostgreSQL의 장점은 무엇일까요?
  • - 인덱스는 크게 Hash 인덱스와 B+Tree 인덱스가 있습니다. 이것은 무엇일까요?
  • - 인덱스 Scan 방식은 무엇이 있나요?
  • - 인덱스 설계시 NULL값은 고려되야 할까요?
  • - Nested Loop 조인은 무엇일까요?
  • - Windows 함수는 무엇이고 어떻게 작성할까요?
  • - KNN 알고리즘을 쿼리로 구현할 수 있을까요?
  • - MySQL에서 대량의 데이터(500만개 이상)를 Insert해야하는 경우엔 어떻게 해야할까요?
  • - RDB의 char와 varchar의 차이는 무엇일까요?
  • - 구글의 BigQuery, AWS의 Redshift는 기존 RDB와 무슨 차이가 있을까요? 왜 빠를까요?
  • - 쿼리의 성능을 확인하기 위해 어떤 쿼리문을 작성해야 할까요?
  • - MySQL이 요새 느리다는 신고가 들어왔습니다. 첫번째로 무엇을 확인하시고 조정하시겠나요?
  • - 동작하는 MySQL에 Alter table을 하면 안되는 이유를 설명해주세요. 그리고 대안을 설명해주세요
  • - 빡세게 동작하고 있는 MySQL을 백업뜨기 위해서는 어떤 방법이 필요할까요?
목차로 이동

데이터 시각화

  • - 네트워크 관계를 시각화해야 할 경우 어떻게 해야할까요?
  • - Tableau같은 BI Tool은 어느 경우 도입하면 좋을까요?
  • - "신규/재방문자별 지역별(혹은 일별) 방문자수와 구매전환율"이나 "고객등급별 최근방문일별 고객수와 평균구매금액"와 같이 4가지 이상의 정보를 시각화하는 가장 좋은 방법을 추천해주세요
  • - 구매에 영향을 주는 요소의 발견을 위한 관점에서, 개인에 대한 쇼핑몰 웹 활동의 시계열 데이터를 효과적으로 시각화하기 위한 방법은 무엇일까요? 표현되어야 하는 정보(feature)는 어떤 것일까요? 실제시 어떤 것이 가장 고민될까요?
  • - 파이차트는 왜 구릴까요? 언제 구린가요? 안구릴때는 언제인가요?
  • - 히스토그램의 가장 큰 문제는 무엇인가요?
  • - 워드클라우드는 보기엔 예쁘지만 약점이 있습니다. 어떤 약점일까요?
  • - 어떤 1차원값이, 데이터가 몰려있어서 직선상에 표현했을 때 보기가 쉽지 않습니다. 어떻게 해야할까요?
목차로 이동

시스템 엔지니어링

  • - 지속적인 Cron 작업이 필요합니다. (dependency가 있는 작업들도 존재합니다) 어떻게 작업들을 관리할까요?
  • - 처음 서버를 샀습니다. 어떤 보안적 조치를 먼저 하시겠습니까?
  • - SSH로의 brute-force attack을 막기 위해서 어떤 조치를 취하고 싶으신가요?
  • - 프로세스의 CPU 상태를 보기 위해 top을 했습니다. user,system,iowait중에 뭐를 제일
  • 신경쓰시나요? 이상적인 프로그램이라면 어떻게 저 값들이 나오고 있어야 할까요?
  • - iowait이 높게 나왔다면, 내가 해야하는 조치는 무엇인가요? (돈으로 해결하는 방법과 소프트웨어로 해결하는 방법을 대답해주세요)
  • - 동시에 10개의 컴퓨터에 라이브러리를 설치하는 일이 빈번히 발생합니다. 어떤 해결책이 있을까요?
  • - screen과 tmux중에 뭘 더 좋아하시나요?
  • - vim입니까. emacs입니까. 소속을 밝히세요.
  • - 가장 좋아하는 리눅스 배포판은 뭡니까. 왜죠?
  • - 관리하는 컴퓨터가 10대가 넘었습니다. 중요한 모니터링 지표는 뭐가 있을까요? 뭐로 하실건가요?
  • - GIT의 소스가 있고, 서비스 사용중인 웹서버가 10대 이상 넘게 있습니다. 어떻게 배포할건가요?
목차로 이동

분산처리

  • - Apache Beam에 대해 아시나요? 기존 하둡과 어떤 차이가 있을까요?
  • - 좋게 만들어진 MapReduce는 어떤 프로그램일까요? 데이터의 Size 변화의 관점에서 설명할 수 있을까요?
  • - 여러 MR작업의 연쇄로 최종결과물이 나올때, 중간에 작업이 Fail날수 있습니다. 작업의 Fail은 어떻게 모니터링 하시겠습니까? 작업들간의 dependency는 어떻게 해결하시겠습니까?
  • - 분산환경의 JOIN은, 보통 디스크, CPU, 네트워크 중 어디에서 병목이 발생할까요? 이를 해결하기 위해 무엇을 해야 할까요?
  • - 암달의 법칙에 대해 말해봅시다. 그러므로 왜 shared-nothing 구조로 만들어야 하는지 설명해봅시다.
  • - shared-nothing 구조의 단점도 있습니다. 어떤 것이 해당할까요?
  • - Spark이 Hadoop보다 빠른 이유를 I/O 최적화 관점에서 생각해봅시다.
  • - 카산드라는 망한것 같습니다. 왜 망한것 같나요? 그래도 활용처가 있다면 어디인것 같나요.
  • - TB 단위 이상의 기존 데이터와 시간당 GB단위의 신생 로그가 들어오는 서비스에서 모든 가입자에게 개별적으로 계산된 실시간 서비스(웹)를 제공하기 위한 시스템 구조를 구상해봅시다.
  • - 대용량 자료를 빠르게 lookup해야 하는 일이 있습니다. (100GB 이상, 100ms언더로 특정자료 찾기). 어떤 백엔드를 사용하시겠나요? 느린 백엔드를 사용한다면 이를 보완할 방법은 뭐가 있을까요?
  • - 데이터를 여러 머신으로 부터 모으기 위해 여러 선택지가 있을 수 있습니다. (flume, fluentd등) 아예 소스로부터 kafka등의 메시징 시스템을 바로 쓸 수도 있습니다. 어떤 것을 선호하시나요? 왜죠?
목차로 이동

웹 아키텍쳐

  • - 트래픽이 몰리는 상황입니다. AWS의 ELB 세팅을 위해서 웹서버는 어떤 요건을 가져야 쉽게 autoscale가능할까요?
  • - 왜 Apache보다 Nginx가 성능이 좋을까요? node.js가 성능이 좋은 이유와 곁들여 설명할 수 있을까요?
  • - node.js는 일반적으로 빠르지만 어떤 경우에는 쓰면 안될까요?
  • - 하나의 IP에서 여러 도메인의 HTTPS 서버를 운영할 수 있을까요? 안된다면 왜인가요? 또 이걸 해결하는 방법이 있는데 그건 뭘까요?
  • - 개발이 한창 진행되는 와중에도 서비스는 계속 운영되어야 합니다. 이를 가능하게 하는 상용 deploy 환경은 어떻게 구현가능한가요? WEB/WAS/DB/Cluster 각각의 영역에서 중요한 변화가 수반되는 경우에도 동작 가능한, 가장 Cost가 적은 방식을 구상하고 시나리오를 만들어봅시다.
목차로 이동

서비스 구현

  • 크롤러를 파이썬으로 구현할 때 BeautifulSoup과 Selenium의 장단점은 무엇일까요?
  • - 빈번한 접속으로 우리 IP가 차단되었을 때의 해결책은? (대화로 푼다. 이런거 말구요)
  • - 당장 10분안에 사이트의 A/B 테스트를 하고 싶다면 어떻게 해야 할까요? 타 서비스를 써도됩니다.
  • - 신규 방문자와 재 방문자를 구별하여 A/B 테스트를 하고 싶다면 어떻게 해야 할까요?
  • R의 결과물을 python으로 만든 대시보드에 넣고 싶다면 어떤 방법들이 가능할까요?
  • - 쇼핑몰의 상품별 노출 횟수와 클릭수를 손쉽게 수집하려면 어떻게 해야 할까요?
  • - 여러 웹사이트를 돌아다니는 사용자를 하나로 엮어서 보고자 합니다. 우리가 각 사이트의 웹에 우리 코드를 삽입할 수 있다고 가정할 때, 이것이 가능한가요? 가능하다면, 그 방법에는 어떤 것이 있을까요?
  • - 고객사 혹은 외부 서버와의 데이터 전달이 필요한 경우가 있습니다. 데이터 전달 과정에서 보안을 위해 당연히(plain text)로 전송하는 것은 안됩니다. 어떤 방법이 있을까요?
목차로 이동

대 고객 사이드

  • - 고객이 궁금하다고 말하는 요소가 내가 생각하기에는 중요하지 않고 다른 부분이 더 중요해 보입니다. 어떤 식으로 대화를 풀어나가야 할까요?
  • - 현업 카운터 파트와 자주 만나며 실패한 분석까지 같이 공유하는 경우와, 시간을 두고 멋진 결과만 공유하는 케이스에서 무엇을 선택하시겠습니까?
  • - 고객이 질문지 리스트를 10개를 주었습니다. 어떤 기준으로 우선순위를 정해야 할까요?
  • - 오프라인 데이터가 결합이 되어야 해서, 데이터의 피드백 주기가 매우 느리고 정합성도 의심되는 상황입니다. 우리가 할 수 있는 액션이나 방향 수정은 무엇일까요?
  • - 동시에 여러개의 A/B테스트를 돌리기엔 모수가 부족한 상황입니다. 어떻게 해야할까요?
  • - 고객사가 과도하게 정보성 대시보드만을 요청할 경우, 어떻게 대처해야 할까요?
  • - 고객사에게 위클리 리포트를 제공하고 있었는데, 금주에는 별다른 내용이 없었습니다. 어떻게 할까요?
  • - 카페24, 메이크샵 같은 서비스에서 데이터를 어떻게 가져오면 좋을까요?
  • - 기존에 같은 목적의 업무를 수행하던 조직이 있습니다. 어떻게 관계 형성을 해 나가야 할까요. 혹은 일이 되게 하기 위해서는 어떤 부분이 해소되어야 할까요.
  • - 인터뷰나 강의에 활용하기 위한 백데이터는 어느 수준까지 일반화 해서 사용해야 할까요?
  • - 고객사가 우리와 일하고 싶은데 현재는 capa가 되지 않습니다. 어떻게 대처해야 할까요?
목차로 이동

개인정보

  • - 어떤 정보들이 개인정보에 해당할까요? ID는 개인정보에 해당할까요? 이를 어기지 않는 합법적 방법으로 식별하고 싶으면 어떻게 해야할까요?
  • - 국내 개인 정보 보호 현황에 대한 견해는 어떠한지요? 만약 사업을 진행하는데 장애요소로 작용한다면, 이에 대한 해결 방안은 어떤 것이 있을까요?
  • - 제3자 쿠키는 왜 문제가 되나요?
목차로 이동

Reference

[TF Dev Certificate Error] 가상머신에서 시험 환경 학습 중 발생한 에러 해결하기

에러 개요

OOM when allocating tensor with shape[128,16,298,298] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
	 [[node sequential/conv2d/Relu (defined at <ipython-input-18-b47e4cb674de>:1) ]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.

image

에러 원인

가상 머신 또는 로컬 컴퓨터에서 사용하고 있는 GPU 메모리를 거의 다 사용하고 있는 상황에 새로운 학습을 진행하게 되었을 때 발생한 에러다.

가상머신이 알아서 놀고 있는 GPU에 자동으로 할당해주면 좋겠는데, 아직 주피터 노트북에서 이러한 기능까지 제공하고 있는 것 같지는 않다.

현재 작업 중인 프로젝트가 학습한 이미지를 토대로 이미지를 생성하는 작업이다 (keras의 ImageGenerator 인스턴스 사용 중)

코세라로 사용할 땐 큰 문제가 없었는데, 아마 Backend.AI에서 생성한 가상머신 용량이 작아서 발생한 것으로 보인다.

(현재 사용 중인 Backend.AI에서 생성한 가상 머신의 에러로 보이지는 않는다)

해결법

기존에 사용하던 주피터 노트북을 다운로드 받고, 가상 머신의 GPU 용량을 키워 코드를 다시 돌려보니 작동한다.

아마 이미지 생성하는 작업이 생각보다 GPU 리소스를 많이 사용하다보니 발생한 에러로 보인다.

(그럼 GPU 없는 노트북의 로컬 환경에서 안돌아가겠는데? Colab도 GPU 리소스가 적은 무료 버전에서 에러가 발생할 수도 있겠다..?)

[Assignment Error] Course 5, Week 2: Exercise 1 - "Check the shape of your avg array"

에러 설명

  • avg 변수와 word_to_vec_map.shape가 차원이 안맞아서 에러가 발생했다.

  • 에러 결과 : "Check the shape of your avg array"

하단 코드 참고

def sentence_to_avg(sentence, word_to_vec_map):
    """
    Converts a sentence (string) into a list of words (strings). Extracts the GloVe representation of each word
    and averages its value into a single vector encoding the meaning of the sentence.
    
    Arguments:
    sentence -- string, one training example from X
    word_to_vec_map -- dictionary mapping every word in a vocabulary into its 50-dimensional vector representation
    
    Returns:
    avg -- average vector encoding information about the sentence, numpy-array of shape (J,), where J can be any number
    """
    # Get a valid word contained in the word_to_vec_map. 
    any_word = list(word_to_vec_map.keys())[0]
    
    ### START CODE HERE ###
    # Step 1: Split sentence into list of lower case words (≈ 1 line)
    words = sentence.lower().split()

    # Initialize the average word vector, should have the same shape as your word vectors.
    avg = np.zeros(word_to_vec_map[any_word].shape)
    
    # Initialize count to 0
    count = 0
    
    # Step 2: average the word vectors. You can loop over the words in the list "words".
    for w in words:
        # Check that word exists in word_to_vec_map
        if w in word_to_vec_map:
            avg += word_to_vec_map[w]
            # Increment count
            count +=1
          
    if count > 0:
        # Get the average. But only if count > 0
        avg = avg / count # 여기서 np.mean을 사용하지 말 것.
    
    ### END CODE HERE ###
    
    return avg

핵심이 되는 에러 부분이 avg = avg / count인데, 이 코드는 정답이고 avg = np.mean(avg)을 사용해서 코드를 짜면 avg 차원 전체에 대한 평균값이 구해져서 Scalar로 값이 반환된다.

여기서 원하는 것은 벡터 형태로 값이 반환되어야하기 때문에 스칼라 연산 결과 값이 아닌 벡터 연산으로 진행하게끔 하기 위해 avg / count를 쓴다.

별 것 아닌데 딥러닝하다보면 계속 차원 관련된 이슈가 걸려서 헷갈린다.

[Assignment Error] Course 4, Week 2: CNN Convolutional_block Error

Exercise 2를 해결하는 과정에서 에러 발생

"Wrong values when training=False."

에러 원인 : 케라스 배치 정규화 모듈을 사용하는 과정에서 training=False가 되는 경우, 입력값을 업데이트해주면 안되는 상황임

If training is set to False, its weights are not updated with the new examples. I.e when the model is used in prediction mode.

# UNQ_C2
# GRADED FUNCTION: convolutional_block

def convolutional_block(X, f, filters, s = 2, training=True, initializer=glorot_uniform):
    """
    Implementation of the convolutional block as defined in Figure 4
    
    Arguments:
    X -- input tensor of shape (m, n_H_prev, n_W_prev, n_C_prev)
    f -- integer, specifying the shape of the middle CONV's window for the main path
    filters -- python list of integers, defining the number of filters in the CONV layers of the main path
    s -- Integer, specifying the stride to be used
    training -- True: Behave in training mode
                False: Behave in inference mode
    initializer -- to set up the initial weights of a layer. Equals to Glorot uniform initializer, 
                   also called Xavier uniform initializer.
    
    Returns:
    X -- output of the convolutional block, tensor of shape (n_H, n_W, n_C)
    """
    
    # Retrieve Filters
    F1, F2, F3 = filters
    
    # Save the input value
    X_shortcut = X


    ##### MAIN PATH #####
    
    # First component of main path glorot_uniform(seed=0)
    X = Conv2D(filters = F1, kernel_size = 1, strides = (s, s), padding='valid', kernel_initializer = initializer(seed=0))(X)
    X = BatchNormalization(axis = 3)(X, training=training)
    X = Activation('relu')(X)

    ### START CODE HERE
    
    ## Second component of main path (≈3 lines)
    X = Conv2D(filters = F2, kernel_size = f, strides = (1, 1), padding='same', kernel_initializer = initializer(seed=0))(X)
    X = BatchNormalization(axis = 3)(X, training=training)
    X = Activation('relu')(X)

    ## Third component of main path (≈2 lines)
    X = Conv2D(filters = F3, kernel_size = 1, strides = (1, 1), padding='valid', kernel_initializer = initializer(seed=0))(X)
    X = BatchNormalization(axis = 3)(X, training=training)
    
    ##### SHORTCUT PATH ##### (≈2 lines)
    X_shortcut = Conv2D(filters = F3, kernel_size = 1, strides = (s, s), padding='valid', kernel_initializer = initializer(seed=0))(X_shortcut)
    X_shortcut = BatchNormalization(axis = 3)(X_shortcut, training=training)
    
    ### END CODE HERE

    # Final step: Add shortcut value to main path (Use this order [X, X_shortcut]), and pass it through a RELU activation
    X = Add()([X, X_shortcut])
    X = Activation('relu')(X)
    
    return X

해결

    X_shortcut = Conv2D(filters = F3, kernel_size = 1, strides = (s, s), padding='valid', kernel_initializer = initializer(seed=0))(X_shortcut)
    X_shortcut = BatchNormalization(axis = 3)(X_shortcut, training=training)

shortcut 값을 그대로 유지해주는 것이 관건임

[Window TF Installation Error] could not find a version that satisfies the requirement tensorflow (from versions none)

유튜브 및 블로그 구글링을 하면서 텐서플로우 시험을 치를 때, 텐서플로우 시험 플러그인만 설치하면 안되고, 반드시 코드를 실행하는 필수 모듈까지 설치해야된다는 것을 확인했고, 이에 따라 M1 맥북에서는 시험에 필요한 모든 모듈을 설치하기 어렵다고 판단, 기존에 갖고 있던 5년 된 윈도우 노트북을 사용해야겠다 결론을 지음

M1 맥북에서

  • 텐서플로우 설치는 되나 반드시 아나콘다를 설치해야함 (텐서플로우 시험 관리국에서 아나콘다는 절대 사용하지 말라고 언급)
  • 판다스, 넘파이, pillow조차 아나콘다가 있어야 설치 가능

결과적으로 윈도우로 넘어와서 현재 환경 설정 중인데 환경 설정 중에 다음과 같은 에러가 발생했다.

could not find a version that satisfies the requirement tensorflow (from versions none)

찾아보니 32비트 파이썬을 설치했을 경우 텐서 플로우 버전을 찾을 수 없는 에러가 발생 (맥북은 기본적으로 64비트 지원인 것 같은데, 윈도우는 아직까지 32비트와 호환되는 듯 싶다)

해당 에러 해결을 위해 윈도우에 설치된 32비트 파이썬을 삭제하고 64비트 파이썬 3.8.0으로 재설치를 진행하고 있다.

경과

-> 설치 완료!

"""
시험에서 요구하는 다음과 같은 사항을 모두 설치했다.

python == 3.8.0
tensorflow==2.5.0
tensorflow-datasets==4.3.0
Pillow==8.2.0
pandas==1.2.4
numpy==1.19.5
scipy==1.7.0

[Certificate] GCP Data Engineer 시험 일정

  • 11월 30일 시험 예정 -> 일정 변경 : 11월 2일

  • 시간 관계상 모든 강의를 다 볼 수는 없다. 면접 및 알고리즘 일정도 있는 것을 감안해서 핵심 몇 개 강의만 수강하는 것을 목표로 하자.

  • Official Certificate Page

image

GCP Data Engineer 페이지에서 안내하는 모든 학습 내용이 코세라에 강의로 있고, Skill Badge라고 되어 있는 것만 quick lab에서 수강하는 형태로 되어 있는 것으로 보인다.

위 강의는 참고하자. 구글 클라우드에서 데이터 엔지니어 시험을 위해 코세라에 패키지를 묶어서 강의하는 것으로 보인다.

[Pop Idea] 문득 떠오른 만들어 볼 수 있는 머신러닝 프로젝트 아이디어 구조

서비스 제작에 대한 전반적인 프로세스

  1. Pretrained Model을 사용해서 모델의 학습 효율 & 시간을 개선하고 (즉, 전이 학습을 사용)

  2. 이렇게 만들어진 모델을 GCP Function을 사용해서 serverless로 배포

  3. 만들어진 GCP Function에 배포된 모델은 Django로 서버를 빌드에 연동

  4. Front (아님 그냥 리액트로 빌드하거나) 만들고, 그걸 웹 상에 EB 같은 것을 사용해 배포

(GCP에서도 배포 자동화 툴이 있을텐데 이걸 찾아보면 좋을 것 같다. GCP 가상 인스턴스 이름도 모르고 있다.)

  1. 코드 업데이트할 때마다 github에 CI를 연결해서 배포 자동화 과정 진행 (무중단 배포)

백엔드 애플리케이션에 머신러닝 모델을 함께 얹어서 배포하지 않는 이유?

  • 배포한 서버의 가용 리소스를 얼마나 잡아먹을지 확인할 길이 없다.

  • 배포하는 서버와는 별개로 머신러닝 서비스를 이용하는 횟수에 따라 비용이 청구되는 형태가 조금 더 절약하는 형태가 아닐까 짐작

  • 이렇게만 해도 풀스택 경험해보는 것은 그렇게 어려워 보이지는 않는다?

[Dashboard] 구글 머신러닝 부트캠프 수료 조건 현황

[Assignment Error] Error in Test in Assignment 2, Week1, Course4

# GRADED FUNCTION: convolutional_model

def convolutional_model(input_shape):
    """
    Implements the forward propagation for the model:
    CONV2D -> RELU -> MAXPOOL -> CONV2D -> RELU -> MAXPOOL -> FLATTEN -> DENSE
    
    Note that for simplicity and grading purposes, you'll hard-code some values
    such as the stride and kernel (filter) sizes. 
    Normally, functions should take these values as function parameters.
    
    Arguments:
    input_img -- input dataset, of shape (input_shape)

    Returns:
    model -- TF Keras model (object containing the information for the entire training process) 
    """
    
    input_img = tf.keras.Input(shape=input_shape)
    ## CONV2D: 8 filters 4x4, stride of 1, padding 'SAME'
    Z1 = tf.keras.layers.Conv2D(8, (4, 4), strides=(1, 1), padding="same", activation="relu")(input_img)
    
    ## RELU
    # A1 = tf.keras.layers.ReLU()

    ## MAXPOOL: window 8x8, stride 8, padding 'SAME'
    P1 = tf.keras.layers.MaxPool2D(pool_size=(8, 8),strides=(8,8), padding='same')(Z1)
    
    ## CONV2D: 16 filters 2x2, stride 1, padding 'SAME'
    Z2 = tf.keras.layers.Conv2D(16, (2, 2), strides=(1, 1), padding="same",activation="relu")(P1)
    
    ## RELU
    # A2 = tf.keras.layers.ReLU()
    
    ## MAXPOOL: window 4x4, stride 4, padding 'SAME'
    P2 = tf.keras.layers.MaxPool2D(pool_size=(4, 4),strides=(4,4), padding='same')(Z2)
    
    ## FLATTEN
    F = tf.keras.layers.Flatten()(P2)
    
    ## Dense layer
    ## 6 neurons in output layer. Hint: one of the arguments should be "activation='softmax'" 
    outputs = tf.keras.layers.Dense(6, activation='softmax')(F)
    
    # YOUR CODE STARTS HERE
    
    
    # YOUR CODE ENDS HERE
    model = tf.keras.Model(inputs=input_img, outputs=outputs)
    return model

Error 내용

Test failed 
 Expected value 

 ['Conv2D', (None, 64, 64, 8), 392, 'same', 'linear', 'GlorotUniform'] 

 does not match the input value: 

 ['Conv2D', (None, 64, 64, 8), 392, 'same', 'relu', 'GlorotUniform']

에러 설명

아마 해당 에러는 Conv2D 함수에 직접적으로 Relu 함수를 넣어 실행한 것이 에러를 초래한 것으로 보인다.

별도로 빼서 넣는 방법이 떠오르지 않아서 일단 이렇게 진행했는데, 해당 에러를 고칠 필요가 있다.

[Mission4 Assignment Error] Tensorflow Intro Assignment Bug

프로젝트 레포

1. 에러 발생 경위 : 연습문제 3번의 one_hot_matrix문제를 해결하는 과정에서 발생

image

위의 이미지를 보면 one_hot = tf.reshape(tf.one_hot(label, depth, axis=0), (depth))라고 코드를 작성해야 테스트 케이스가 통과하는 것을 볼 수 있음.


2. 연쇄 에러 : new_y_test / new_y_train 변수 지정

그러나 그 아래 코드인 new_y_test / new_y_train 를 작성하는 과정에서 one_hot_matrix 코드를 one_hot = tf.reshape(tf.one_hot(label, depth, axis=0), (depth,1))로 reshape해주지 않으면 에러가 발생함

(new_y_test / new_y_train가 작성된 셀은 편집 모드가 지원되지 않음)

image


3. 연쇄 에러 : Exercise 6 - compute_cost

그리고 이후 연습문제들은 테스트 케이스 통과가 정상적으로 잘 되다가 마지막 문제에서 new_y_train을 사용하는 과정에서 다시 에러 발생

image

해당 문제는 new_y_train 변수의 차원을 수정해줘야하는데, 수정이 불가능하므로 에러 수정 불가.

이에 따라 후반부 모델 성능 평가와 결과 예측치를 작업하는 결과 값이 모두 엉망이 되어버림


4. 결과 예측 그래프 이미지

image


5. 경과

결과는 코세라 측에 문의를 진행 중이며, 답변에 따라 해결되면 해당 이슈 close 예정

[TF Dev Certificate 수료 이후] 9월의 남은 2주 동안 해야할 것

환경 설정 관련 이슈로 인해 본래 오늘 치를 예정이었던 텐서플로우 자격증 시험을 금요일에 치를 예정이다.

(9월 17일)

이후 9월의 남은 2주 동안 시간이 조금 있으므로 아래와 같은 2가지를 해 볼 예정이다.

  • 1. Kaggle Project

  • 2. Programmers Dev-matching Project

프로젝트 당 1주일씩 시간을 할당하고, 10월부터는 11월 30일까지 두 달 동안 GCP Data Engineer 시험을 보자.

음,, 시간적으로 알뜰하게 이용할 수 있을 것으로 보인다.

[JN Env Error] Jupyter Notebook Kernel Dead when executing TF

텐서플로우2 라이브러리 가상환경 내 설치 이후, 아래와 같은 에러 발생

image

별도의 의존성 문제가 발생할 수 없는 코드이며 (단순 텐서플로우 설치 후 실행 과정), 코드 에러가 아닌 IDE 실행 과정에서 버그가 발생함

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.