<jupyter_start><jupyter_text>Q1.케라스의 개발 과정을 활용하여 단층 퍼셉트론으로 XOR 게이트 문제에 대해 적은 횟수의 에폭으로 학습시켜보고,  evaluate(), predict() 함수를 통해 결과를 출력해보세요. 아마 학습되지 않을 것입니다.  잘 학습시키기 위한 방법도 중요하지만, 학습되지 않는 경우를 체험해보는 것도 중요한 경험입니다.<jupyter_code>import tensorflow as tf
import numpy as np

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import SGD
from tensorflow.keras.losses import mse

tf.random.set_seed(777) # 시드를 설정합니다.

# 데이터 준비하기
x = np.array([[0, 0], [1, 0], [0, 1], [1, 1]])
y = np.array([[0], [1], [1], [0]])

# 모델 구성하기
model = Sequential()
# 단층 퍼셉트론을 구성합니다.
model.add(Dense(1, input_shape = (2, ), activation = 'linear'))

# 모델 준비하기
model.compile(optimizer = SGD(),
              loss = mse,
              metrics = ['acc']) # list 형태로 평가지표를 전달합니다.

model.fit(x, y, epochs = 100)
# evaluate(): 평가를 진행합니다
model.evaluate(x, y)

# predict(): 예측을 진행합니다.
preds = model.predict(x)
for a, b in zip(preds, y):
    print(f"예측값 {a} - 정답 {b}")<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.14453125, 'fraction_numerical': 0.0205078125, 'mean_word_length': 3.812206572769953, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '409452', 'license': 'MIT', 'n_tokens_mistral': 586, 'n_tokens_neox': 678, 'n_words': 126, 'path': 'solutions/ch3/solution_1.ipynb', 'repo_name': 'airplane2230/keras_with_tf2.0', 'size': '1024'}