본문 바로가기
ML

TensorFlow 도전기 (with Coursera 1일차)

by krheyjin 2021. 6. 4.
728x90
반응형

면접을 보러다니다보니 AI에 대한 수요가 높음을
체감하고 급 텐서플로우에 도전해보기로 한다.
인프라 엔지니어링에서도 요즘에 AI를 이해 할수 있는 사람을
찾고있다. 반대로 안찾는게 이상하긴함.

Python 기본문법은 뗀 정도이고, 대충 코드보고 응용정도는 가능하고
python데이터분석시험이 일본에 있어서 작년에 취득했고
그래서 scikit-learn정도는 쥬피터노트북에서 회귀는 직접해본정도.
한때 선형대수를 듣다가 내 붕어머리에 빡쳐서 잠시 쉬고있는 중이다.

어쨌뜬, 새로운 일을 시작할때에는 리서치부터!
모두들 입을모아, Coursera의 Introduction to TensorFlow for Artificial Intelligence, Machine Learning, and Deep Learning를 들으라고 한다. 그래서 그거 들으면서 배운내용 정리하고자한다.


1. 강의를 듣는다.
일단 코세라가 5일간 무료라고 하니, 5일안에 듣는 것을 목표로 해본다.
첫강의에서는 머신러닝의 특성에 대해서 알려준다.
기존의 프로그래밍이 함수를 적고 데이터를 때려서 리턴값을 얻는것에 반해
머신러닝은 데이터를 때려서 규칙를 찾는것이라는 설명이 인상적이다.

2. Quiz
막 설명이 나오다가 퀴즈가 나왔다. 반은 맞추고 반은 틀리고.
근데 패스하려면 80%이상의 정답률이 필요하다고 할 뿐이다.
근데 강의내용에 있는것도 있는데, 없는것도 있다.
어쩌라는...?

아...이게 한국교육의 폐해인가-_-...직접 찾아보라는 뜻인가보다.
그래서 2,3번 챌린지 끝에 만점을 받을 수 있었다.
그 문제의 해답에 대해서 저는 이미 찾았고, 아래에 적어보도록하는데,
텐서플로의 기초개념이니 한번쯤은 직접 찾아보시길 바란다.

-Dense:A layer of connected neurons
-Loss function:Measures how good the current ‘guess’ is
-optimizer:Generates a new and improved guess
-Convergence: The process of getting very close to the correct answer
-model.fit:It trains the neural network to fit one set of values to another
강의가 영어라 영어로 그냥 이해하는게 나을꺼 같다.

3. Submit
갑자기 과제를 제출하라고한다. Exercise 1 (Housing Prices)은 직접 코드를 짜야하나보다.
갑자기 환경은 어떻게 마련하지????하고 고민하던차에
Google colaboratory와 만나고 말았다. 헉쓰...
나는 이걸 위해서 한국에 있는 Synology에 Docker를 깔고 거기에 쥬피터노트북이미지를
설치해서 쓰고있었는데..이게 이미 있구나...하긴 없을리없지.

어쨌든, Exercise 1 (Housing Prices)의 문제에 들어가보면 이렇다.

In this exercise you'll try to build a neural network that predicts the price of a house according to a simple formula. So, imagine if house pricing was as easy as a house costs 50k + 50k per bedroom, so that a 1 bedroom house costs 100k, a 2 bedroom house costs 150k etc. How would you create a neural network that learns this relationship so that it would predict a 7 bedroom house as costing close to 400k etc.

Hint: Your network might work better if you scale the house price down. You don't have to give the answer 400...it might be better to create something that predicts the number 4, and then your answer is in the 'hundreds of thousands' etc.

음~ 무슨말인지 모르겠다...그래서 구글링했다. 답이있었다.
너무 지식레벨이 낮으면 일단 답부터 보는 것도 방법이다.
보고나서 왜 이런지 생각해 나가면 빠르게 지식을 습득할수있다.
응용은 지식을 습득한 후의 이야기...
https://colab.research.google.com/github/lmoroney/dlaicourse/blob/master/Exercises/Exercise%201%20-%20House%20Prices/Exercise_1_House_Prices_Answer.ipynb#scrollTo=PUNO2E6SeURH

import tensorflow as tf import numpy as np from tensorflow import keras model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])]) model.compile(optimizer='sgd', loss='mean_squared_error') xs = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], dtype=float) ys = np.array([1.0, 1.5, 2.0, 2.5, 3.0, 3.5], dtype=float) model.fit(xs, ys, epochs=1000) print(model.predict([7.0]))

아항. 집자체가 50K고, 방하나가 늘어가면 50K가 불어나는구낭.
방7개면 어떻게 되는지 알아보라는 말이었군. 직선의 방정식같은 느낌인가?
데이터를 통해서 룰을 찾아서 예측하는거구나 라는걸 알수있다.
대충 저거 참고해서 실행시켜보니 [4.005338] 라는 값이 나왔다.
대충 hint에서도 아마 4라는 숫자가 나올꺼야~라고 하고있으니 얼추 맞는듯?

흐름에 대한 설명은 텐서플로의 튜토리얼 페이지에도 있다.
https://www.tensorflow.org/tutorials/quickstart/beginner?hl=ko
1.데이터셋을 준비한다.
2. 층을 차례대로 쌓아 tf.keras.Sequential 모델을 만들고 훈련에 사용할 옵티마이저(optimizer)와 손실 함수를 선택한다.
3. 모델을 훈련하고 평가한다.

내 의문은 저러한 모델을 만드는 방법이라던가 옵티마이저와 손실함수에 대해서 어떻게 이해해야하는것일까..하는것인데 차차 하도록한다.
써밋한 내용 채점도 해준다~ 합격이라고한다.

You have returned expected type
Congratulations, your submission was graded correct.


이렇게 1일치 강좌가 끝났다. 신기방기~

728x90
반응형

댓글