#目的:目的:從一堆xy對應數據,找出迴歸線(歸納找出趨勢) #方法:建立深度學習模型,來找出xy的對應關係式 #(1)步驟1:import tensorflow library(TensorFlow and keras) import tensorflow as tf #(2)步驟2:使用神經網絡模型,單層神經,一個神經元units=1 #Dense層:為上下緊密連結的神經網路層 #建立1層神經網絡(第1層=輸出層)(輸入層不算在層之一) #第1層隱藏層(同時在此層要設定輸入層大小)[keras.layers.Dense(units=1,input_shape=[1])] #model=keras.Sequential([keras.layers.Dense(units=1,input_shape=[1])]) model = tf.keras.Sequential( [ tf.keras.layers.Dense(units=1,input_shape=[1]) ]) #(3)步驟3:確立求解的目標函數,設定求解方法(需要設定兩個參數:A.優化函數optimizer,B.損失函數loss) #先用損失函數來評估模型計算結果的好壞,然後用優化函數來生成新的猜測數據,然後一直逼近正確的解答 #在keras有多種優化函數(Optimizer):Adam,SGD,RMSprop,Adagrad,Adadelta,Adam等 #梯度下降最常見三種:BGD,SGD,MBGD #SGD:隨機梯度下降法(SGD:stochastic gradient descent) #目標函數=誤差函數=loss:mean_squared_error = 均方誤差函數 = 預測值與實際值的差距之平均值。 #model.compile(optimizer='sgd',loss='mean_squared_error') #9.步驟9:確立求解的目標函數,設定求解方法: model.compile( #第1種寫法:使用參數設定(例如‘sgd') #optimizer='sgd', #loss='mean_squared_error', #metrics=['accuracy'] #第2種寫法:使用物件類別(例如SGD()) optimizer=tf.keras.optimizers.SGD(), loss=tf.keras.losses.MeanSquaredError(), #metrics=tf.keras.metrics.Accuracy() #這個設定的預測值,會較差 metrics=tf.keras.metrics.MeanSquaredError() #這個設定的預測值,會較準確 ) #(4)步驟4:設定(x,y)數據,計算迴歸線(500次的循環,會反复計算x,y值) import numpy as np xs = np.array([-1.0,0.0,1.0,2.0,3.0,4.0],dtype=float) ys = np.array([-3.0,-1.0,1.0,3.0,5.0,7.0],dtype=float) #(5)步驟5:訓練模型: #方法:用model.fit()函數進行訓練, #總共經過500次循環,反复猜測新數據,再驗證是否更接近解答 model.fit(xs,ys,epochs=500) #(6)步驟6:預測 #經過500次計算後,就產生出一個經過訓練後的模型,可以用它來做新的預測,例如:由x=10.0,預測新的y=? print() print("若x=10,使用模型來預測y=",model.predict([10.0]))