AND 문제

# 1. Numpy 가져오기
import numpy as np

print(np.__version__)
import keras

print(keras.__version__)
# 3. Keras 패키지 가져오기
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.optimizers import SGD
# 2. 입력/출력 데이터 만들기

X = np.array([[0,0],[0,1],[1,0],[1,1]])
y = np.array([[0],[0],[0],[1]])
# 4. Perceptron 모델 생성

model = Sequential()

model.add(Dense(units=1, input_dim=2, activation='sigmoid'))

model.summary()

# 5. Compile - Optimizer, Loss function 설정

sgd = SGD(lr=0.1)

model.compile(loss='binary_crossentropy',
              optimizer=sgd)
# 6. 학습시키기

model.fit(X,y, batch_size=1, nb_epoch=500)
# 7. 모델 테스트하기
test = np.array([[0,1]])
pred = model.predict(test)

print(pred)

[[0.09028968]]

print(model.get_weights())

[array([[4.248023 ], [4.2462897]], dtype=float32), array([-6.5563927], dtype=float32)]

 


OR 문제

X = np.array([[0,0],[0,1],[1,0],[1,1]])
Y = np.array([[0],[1],[1],[1]])
model = Sequential()

model.add(Dense(1, input_dim=2, activation='sigmoid'))
model.summary()

sgd = SGD(lr=0.1)
model.compile(loss='binary_crossentropy', optimizer='sgd')
model.fit(X,Y, batch_size=1, nb_epoch=100)
test = np.array([[1,1]])
model.predict(test)

array([[0.9742955]], dtype=float32)

 

XOR 문제

 

X2 = np.array([[0,0],[1,0],[0,1],[1,1]])
Y2 = np.array([[0],[1],[1],[0]])
model_2 = Sequential()

model_2.add(Dense(units=16,input_dim=2, activation='relu'))
model_2.add(Dense(units=1, activation='sigmoid'))

model_2.compile(loss='binary_crossentropy',optimizer=sgd)
model_2.fit(X2,Y2, batch_size=1, nb_epoch=200)
test = np.array([[0,0],[1,0],[0,1],[1,1]])
pred = model_2.predict(test)
print(pred)

 

'Data Anaylsis > Deep Learning' 카테고리의 다른 글

딥러닝 3일차  (0) 2020.03.18
딥러닝 2일차  (0) 2020.03.17
Keras 모델 생성/학습 - 당뇨병 예측 모델  (0) 2020.03.16
Deep learning 1일차  (0) 2020.03.16
conda 가상환경 설치  (1) 2020.03.13

인공신경망을 통해서 주변의 입력값이 들어오게 된다.

입력값을 신경망에서 처리해서 출력값에 넘겨주면, 그것이 인공신경망이다.

 

머신러닝 vs 딥러닝

 

뭐가 더 좋나요?

딥러닝의 특징

1. 데이터와 성능

데이터의 양이 늘어날수록 딥러닝의 성능이 좋아진다.

 

비정형데이터의 경우, 전통적인 머신러닝으로는 좋은 결과를 내기가 어렵다.

2. 하드웨어

고성능의 하드웨어가 있어야 딥러닝이 학습하는데 시간이 덜걸린다(학습이 오래걸림)

 

3. 학습시간

딥러닝의 학습시간은 훨씬 더 오래걸림

 

4. 특징

(feature engineering)은 정형데이터가 있으면 쉽게 합니다.

 

딥러닝은 feature extraction이 학습과 동시에 일어난다.

가중치를 스스로 학습해준다.

(이미지)

 

딥러닝 - 이미지,자연어처리,가격예측,신약개발질병진단,음성인식,로봇자율주행

모두 딥러닝이 있었기에 가능한 분야이다.

 

 

Peceptron이 기본!!

AND,OR,XOR문제 풀기!

threshhold가 0.5라고할때, 

x1 x2 y
0 0 0
0 1 0
1 0 0
1 1 1

다음과 같은 문제를 답할때,

perceptron은 w1*x1 + w2*x2 = y를 답할려면 어떻게 해야할까?

w1 <0.5, w2 <0.5인 모든 가중치면 된다.

 

OR

 

 

 

XOR은

형태로 사용하면 답을 구할 수 있다.

 

 

weight initialization = weight를 랜덤으로 초기화한다(처음에)

Forward Propagation = input에서 output 방향으로 계산하는 과정

Back Propagation = weight값을 수정하는 작업(끝난 곳의 가까운부분부터 수정해 나가는 과정)

Cost Function 예측값과 실제 값의 차이를 기반으로 모델의 정확도(성능)을 판단하기 위한 함수

 

Gradient Descent = cost F의 최저점을 찾아가는 방법.

optimizer = 최저점을 어떻게 찾아갈꺼냐?

 

adagrad, adadelta는 학습속도를 알아서 조절하게 된다(초반에 빠르게)

일반적으로 요새는 adam optimizer를 가장 많이 쓴다.(learning rate를 알아서 조절해준다)

 


Vanishing Gradient

딥러닝을 공부하게되면 꼭 만나게 되는 단어. 

 

매 레이어마다 sigmoid func를 하게된다.

하지만, layer가 딥해질수록(많아질수록) data의 feature가 희미해진다.(특징이 희미해진다)

 

그래서 과거에는 Deeplearning을 할 수 없었다.

그래서 나온것이 relu function ! 

backpropogation을 하더라도 vanishing 문제가 없다!!

tanh, leakey relu, elu등등도 있다.

 

layer마다? node마다 activation function 있어야 되는거 아닌가?

overfitting 

 

 

L1/L2 규제 => 주로 L2를 많이 사용한다.

dropout => overfitting방지

 

keras(뿔)

우리가 만든 모델이 진실을 말해주길....

 

 

 

Network - Cost Function - Optimization

 


CLOUD 개념

 

Resource 서비스하는 단위 하나하나를 resource라고 한다.

스토리지, 웹서비스,앱서비스, 머신러닝, 하둡, 가상환경 등등의 하나하나를 resource라고 통칭한다.

 

Resource의 Region 지역선정(서버, 데이터센터 위치)


Resource Group

안에 여러개의 resource가 들어가 있다.

필요한 이유: 서비스를만드는데, 스토리지도 필요, sql도 필요, 머신러닝도필요, func도 필요...

나중에 관리하기가 어렵다(각각 되어있으면)

따라서 그룹으로 관리한다.

내가 사용할 관련 기능들을 묶어주는 그룹이라고 생각하면 된다.

Resource Group의 Region

그룹의 묶음만 해주는데도 (그룹안에 어떤 리소스가 있는지, 버전은 어떤지 등의 메타데이터를 저장하는 곳)

 

'Data Anaylsis > Deep Learning' 카테고리의 다른 글

딥러닝 3일차  (0) 2020.03.18
딥러닝 2일차  (0) 2020.03.17
Keras 모델 생성/학습 - 당뇨병 예측 모델  (0) 2020.03.16
AND,OR/XOR 문제 keras로 구현!  (0) 2020.03.16
conda 가상환경 설치  (1) 2020.03.13

python으로 다양한 라이브러리를 받아서 사용하다 보면,

라이브러리의 버전 차이 때문에 곤란할 때가 많습니다.

 

 

여기서는, conda 명령어를 통해 environment(가상 환경)을 만들어,

그곳에 필요한 라이브러리를 설치하는 실습을 해보도록 하겠습니다.

(주의! anaconda 64bit, window 환경이 기본적으로 설치되어 있어 합니다!)

Anaconda Prompt를 열어주세요!


 

env 만들기

conda create -n keras_env python=3.6

keras_env라는 이름으로 가상 환경을 만들건대, python 버전은 3.6으로 설치할 것이라고 명명한다.

 

설치되어있는 env를 보려면 

conda env list

라고 작성해주시면 됩니다.

Anaconda Prompt 창을 보시면

 

다음과 같이 (base)라는 것을 보실 수 있습니다. base는 가상 환경이 아닌 기본 환경을 뜻하는 것으로,

가상 환경으로 넘어가서 라이브러리들을 설치해주어야 합니다.

conda activate keras_env

다음과 같이 작성해주시면 

가상 환경이 활성화되었음을 확인할 수 있습니다.

pip list

해보시면,

 

기본적으로 설치되는 라이브러리들(뭔가 가상환경 실행을 위한 파일들 같음) 빼고는 라이브러리가 텅텅 빈 것을 볼 수 있습니다.

 

# 가상환경 비활성화
conda deactivate

# 가상환경 삭제
conda env remove -n keras_env

다음 명령어로 비활성화할 수 있고, 삭제할 수 있습니다.

 

마지막으로, 가상 환경에 tensorflow와 keras를 설치해보도록 하겠습니다.

현재는 tensorflow가 2.1.0까지 나와있는 상태입니다.

"케라스 창시자에게 배우는 딥러닝" 책을 공부하기 위해서, 책에서 사용하는 라이브러리 버전과 같게

tensor flow를 설치하는게 아무래도 좋겠죠?

tensorflow는 1.8.0 버전, keras는 2.2.0 버전을 사용하는 것 같으니 버전을 맞추어 pip로 설치해보도록 합시다.

 

가상환경 turn it on!

pip install tensorflow==1.8.0
pip install keras==2.2.0

설치가 문제없이 되었음을 확인할 수 있습니다.

python을 열고 import 해보겠습니다.

 

잘 import 되는 것을 확인할 수 있습니다!

 

지금까지 가상환경 설치, 가상환경에서 tensorflow,keras를 버전에 맞추어 설치해보았습니다.

'Data Anaylsis > Deep Learning' 카테고리의 다른 글

딥러닝 3일차  (0) 2020.03.18
딥러닝 2일차  (0) 2020.03.17
Keras 모델 생성/학습 - 당뇨병 예측 모델  (0) 2020.03.16
AND,OR/XOR 문제 keras로 구현!  (0) 2020.03.16
Deep learning 1일차  (0) 2020.03.16

+ Recent posts