# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: 'Python 3.8.10 64-bit (''base'': conda)'
#     name: python3
# ---

# + id="2pmrZHSMvYUC"

import tensorflow as tf

## data 선언
x_data = [[0.,0.], [0.,1.], [1.,0.],[1.,1.]]
y_data = [[0.], [0.], [0.], [1.]]
test_data=[[0.3, 0.3]]


# + colab={"base_uri": "https://localhost:8080/"} id="y8doDlvfvZNo" executionInfo={"status": "ok", "timestamp": 1628761343229, "user_tz": -540, "elapsed": 5, "user": {"displayName": "\uae40\ud604\uc6b0", "photoUrl": "", "userId": "06560543018646300359"}} outputId="a178216c-6600-4acd-febf-d0c61e0b807f"

## tf.keras를 활용한 perceptron 모델 구현.
model = tf.keras.Sequential() ## 모델 만들기 위해 sequential 매서드를 선언. 이를 통해 모델을 만들 수 있다.
model.add(tf.keras.layers.Dense(1, input_dim=2)) # 선언된 모델에 add를 통해 쌓아감. , 현재는 입력 변수 갯수 2, perceptron 1개.
model.summary() ## 설계한 모델 프린트


# + colab={"base_uri": "https://localhost:8080/"} id="RdMH3P_YvaAo" executionInfo={"status": "ok", "timestamp": 1628761422872, "user_tz": -540, "elapsed": 79646, "user": {"displayName": "\uae40\ud604\uc6b0", "photoUrl": "", "userId": "06560543018646300359"}} outputId="66022d34-e062-4875-f69c-170c88ce5945"
# 모델 loss, 학습 방법 결정하기
optimizer=tf.keras.optimizers.SGD(lr=0.001)  ### 경사 하강법으로 global min 에 찾아가는 최적화 방법 선언.
loss=tf.keras.losses.binary_crossentropy #losses.mean_squared_error  ## 예측값 과 정답의 오차값 정의. mse는 mean squre error로 (예측값 - 정답)^2 를 의미
metrics=tf.keras.metrics.binary_accuracy ### 학습하면서 평가할 메트릭스 선언

# 모델 컴파일하기
model.compile(loss=loss, optimizer=optimizer, metrics=[metrics])

# 모델 동작하기
model.fit(x_data, y_data, epochs=500, batch_size=4, workers=8, use_multiprocessing=True)


# + id="ndaBss6yva4w"
# 결과를 출력합니다.
print(model.weights)
print(" test data [0.3, 0.3] 예측 값 : ", model.predict(test_data))
if model.predict(test_data)>0.5:
    print(" 합격 " )
else:
    print(" 불합격 ")

StarcoderdataJupyterScriptsDedupFiltered