import numpy as np
X = np.array([
[0, 0],
[1, 0],
[0, 1],
[1, 1]
])
y = np.array([[0], [1], [1], [0]])
activation
: 활성화함수를 설정linear
: 디폴트 값으로 입력값과 가중치로 계산된 결과 값이 그대로 출력sigmoid
: 시그모이드 함수로 이진분류에서 출력층에 주로 쓰임softmax
: 소프드맥스 함수로 다중클래스 분류문제에서 출력층에 주로 쓰임relu
: Rectified Linear Unit 함수로 은닉층에서 주로 쓰임import tensorflow as tf
model = tf.keras.Sequential([
# input_shape 입력을 2개 해서 'sigmoid'함수로 2개 출력
tf.keras.layers.Dense(2, activation='sigmoid', input_shape=(2, )),
# input를 넣지 않아도 자동으로 인식, 'sigmoid'함수로 1개 출력
tf.keras.layers.Dense(1, activation='sigmoid')
])
model.compile(optimizer=tf.keras.optimizers.SGD(learning_rate=0.1), loss='mse')
model.summary()
'''
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 2) 6
dense_1 (Dense) (None, 1) 3
=================================================================
Total params: 9
Trainable params: 9
Non-trainable params: 0
_______________________________
'''
epochs
: 지정된 횟수만큼 학습을 하는 것batch_size
: 한번의 학습에 사용될 데이터의 수를 지정hist = model.fit(X, y, epochs=5000, batch_size=1)
model.predict(X)
import matplotlib.pyplot as plt
%matplotlib inline
# loss 상황
plt.plot(hist.history['loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epochs')
plt.show()
Reference
1) 제로베이스 데이터스쿨 강의자료
2) https://sevillabk.github.io/Dense/
3) https://amber-chaeeunk.tistory.com/23