#目的:目的:從一堆xy對應數據,找出非線性拋物線的迴歸線(歸納找出趨勢) #(1)步驟1:載入AI函式庫:import tensorflow library(TensorFlow and keras) import tensorflow as tf #(2)步驟2:建立神經網絡模型,單層神經,一個神經元units=1 model = tf.keras.Sequential() model.add(tf.keras.layers.Dense(units=16, input_dim=1, activation='relu')) model.add(tf.keras.layers.Dense(units=8, activation='relu')) model.add(tf.keras.layers.Dense(units=8, activation='relu')) model.add(tf.keras.layers.Dense(units=8, activation='relu')) model.add(tf.keras.layers.Dense(units=8, activation='relu')) model.add(tf.keras.layers.Dense(units=8, activation='relu')) model.add(tf.keras.layers.Dense(units=8, activation='relu')) model.add(tf.keras.layers.Dense(units=8, activation='relu')) model.add(tf.keras.layers.Dense(units=1, activation='relu')) #(3)步驟3:建立目標函數,設定求解方法(最少需要設定兩個參數:A.損失函數loss,B.優化函數optimizer) model.compile( optimizer = tf.keras.optimizers.Adam(), #optimizer = tf.keras.optimizers.SGD(), loss = tf.keras.losses.MeanSquaredError() ) #(4)步驟4:設定輸入矩陣數據(x,y), import numpy as np xs = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0]) ys = np.array([0.105, 0.105, 0.148, 0.210, 0.349, 0.540, 0.840, 1.251, 1.799, 2.483]) #(5)步驟5:訓練模型: model.fit(xs,ys,epochs=500) #(6)步驟6:預測 yp = model.predict([12.0]) #(7)步驟畫圖:訓練+預測 import matplotlib.pyplot as plt plt.plot(xs,ys,'ro') plt.plot([12.0],yp,'bo')