Sine 함수 회귀분석 (Sine Regression)
import tensorflow as tf
from tensorflow.keras import layers, Sequential
import numpy as np
import matplotlib.pyplot as plt
print(tf.__version__)
데이터 생성
inputs = np.linspace(-2*np.pi, 2*np.pi, 10000)[:, None]
outputs = np.sin(inputs) + 0.05 * np.random.normal(size=[len(inputs),1])
plt.scatter(inputs[:, 0], outputs[:, 0], s=0.1, color='k', marker='o')

모델 정의
model = Sequential([
layers.Dense(20, activation='sigmoid', input_shape=(1,)),
layers.Dense(20, activation='sigmoid'),
layers.Dense(20, activation='sigmoid'),
layers.Dense(20, activation='sigmoid'),
layers.Dense(20, activation='sigmoid'),
layers.Dense(1)
])
tf.keras.utils.plot_model(model, show_shapes=True)

모델 훈련
model.compile(optimizer='adam',
loss='mae',
metrics=['mae'])
model.fit(inputs, outputs, epochs=50)
Epoch 1/50
313/313 [==============================] - 2s 2ms/step - loss: 0.6421 - mae: 0.6421
Epoch 2/50
313/313 [==============================] - 1s 2ms/step - loss: 0.5862 - mae: 0.5862
Epoch 3/50
313/313 [==============================] - 1s 2ms/step - loss: 0.5202 - mae: 0.5202
Epoch 4/50
313/313 [==============================] - 1s 2ms/step - loss: 0.4892 - mae: 0.4892
Epoch 5/50
313/313 [==============================] - 1s 2ms/step - loss: 0.4676 - mae: 0.4676
Epoch 6/50
313/313 [==============================] - 1s 2ms/step - loss: 0.4191 - mae: 0.4191
Epoch 7/50
313/313 [==============================] - 1s 2ms/step - loss: 0.3894 - mae: 0.3894
Epoch 8/50
313/313 [==============================] - 1s 2ms/step - loss: 0.3861 - mae: 0.3861
Epoch 9/50
313/313 [==============================] - 1s 3ms/step - loss: 0.3838 - mae: 0.3838
Epoch 10/50
313/313 [==============================] - 1s 2ms/step - loss: 0.3828 - mae: 0.3828
Epoch 11/50
313/313 [==============================] - 1s 2ms/step - loss: 0.3824 - mae: 0.3824
Epoch 12/50
313/313 [==============================] - 1s 2ms/step - loss: 0.3814 - mae: 0.3814
Epoch 13/50
313/313 [==============================] - 1s 2ms/step - loss: 0.3804 - mae: 0.3804
Epoch 14/50
313/313 [==============================] - 1s 2ms/step - loss: 0.3790 - mae: 0.3790
Epoch 15/50
313/313 [==============================] - 1s 2ms/step - loss: 0.3783 - mae: 0.3783
Epoch 16/50
313/313 [==============================] - 1s 3ms/step - loss: 0.3750 - mae: 0.3750
Epoch 17/50
313/313 [==============================] - 1s 2ms/step - loss: 0.3678 - mae: 0.3678
Epoch 18/50
313/313 [==============================] - 1s 2ms/step - loss: 0.3082 - mae: 0.3082
Epoch 19/50
313/313 [==============================] - 1s 2ms/step - loss: 0.1540 - mae: 0.1540
Epoch 20/50
313/313 [==============================] - 1s 2ms/step - loss: 0.1167 - mae: 0.1167
Epoch 21/50
313/313 [==============================] - 1s 2ms/step - loss: 0.1080 - mae: 0.1080
Epoch 22/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0998 - mae: 0.0998
Epoch 23/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0956 - mae: 0.0956
Epoch 24/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0919 - mae: 0.0919
Epoch 25/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0894 - mae: 0.0894
Epoch 26/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0891 - mae: 0.0891
Epoch 27/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0880 - mae: 0.0880
Epoch 28/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0881 - mae: 0.0881
Epoch 29/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0864 - mae: 0.0864
Epoch 30/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0863 - mae: 0.0863
Epoch 31/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0862 - mae: 0.0862
Epoch 32/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0855 - mae: 0.0855
Epoch 33/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0855 - mae: 0.0855
Epoch 34/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0849 - mae: 0.0849
Epoch 35/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0848 - mae: 0.0848
Epoch 36/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0843 - mae: 0.0843
Epoch 37/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0839 - mae: 0.0839
Epoch 38/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0832 - mae: 0.0832
Epoch 39/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0834 - mae: 0.0834
Epoch 40/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0834 - mae: 0.0834
Epoch 41/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0827 - mae: 0.0827
Epoch 42/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0834 - mae: 0.0834
Epoch 43/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0827 - mae: 0.0827
Epoch 44/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0824 - mae: 0.0824
Epoch 45/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0821 - mae: 0.0821
Epoch 46/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0824 - mae: 0.0824
Epoch 47/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0830 - mae: 0.0830
Epoch 48/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0815 - mae: 0.0815
Epoch 49/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0823 - mae: 0.0823
Epoch 50/50
313/313 [==============================] - 1s 2ms/step - loss: 0.0818 - mae: 0.0818
<tensorflow.python.keras.callbacks.History at 0x7f847a612510>
test_loss, test_mae = test_output_pred = model.evaluate(inputs, outputs, verbose=0)
print('Test MSE:', test_mae)
테스트
test_output_pred = model.predict(inputs)
plt.scatter(inputs[:, 0], outputs[:, 0], c='k', marker='o', s=0.1)
plt.scatter(inputs[:, 0], test_output_pred[:, 0], c='r', marker='o', s=0.1)
