我有一個X由均值和標準差組成的數據集,重復 5 次,所以數組中有 10 列并且Y由范圍組成:例子:0 到 2020 至 4040 至 6060 至 8080 到 100要將值轉換為 0 和 1,每個元素除以其列的最高出現次數,這適用于 X 和 Y目標:使 X 和 Y 生成接下來的 60 個值X = 60 個值的塊Y = 每個區塊接下來的30個值問題:出于某種原因,我得到負值,看起來我的神經網絡出現故障X:[[0.573 0.699 0.412 0.224 0.696 0.512 0.326 0.314 0.79 0.685] [0.456 0.251 0.629 0.523 0.344 0.286 0.8 0.699 0.721 1. ] ... [0.229 0.148 0.683 0.624 0.222 0.146 0.687 0.732 0.296 0.184] [0.646 0.627 0.204 0.152 0.542 0.632 0.36 0.224 0.291 0.215]]是:[[1. 0.5 0. 0. 0. ] [1. 0.5 0. 0. 0. ] ... [1. 0.5 0. 0. 0. ] [1. 0.5 0. 0. 0. ]]腳本:model = keras.Sequential( [ layers.Dense(10, activation="sigmoid", name="hidden-input"), layers.Dense(5, name="output"), ])model.compile(optimizer = 'Adam', loss = 'mse', metrics = ['mae'])model.fit(X, Y, epochs = 20, batch_size = 10)print(model.summary())y = model.predict(X)概括:_________________________________________________________________Layer (type) Output Shape Param # =================================================================hidden-input (Dense) multiple 110 _________________________________________________________________output (Dense) multiple 55 =================================================================Total params: 165Trainable params: 165Non-trainable params: 0火車:Epoch 1/2048/48 [==============================] - 0s 2ms/sample - loss: 0.3500 - mean_absolute_error: 0.4904...Epoch 20/2048/48 [==============================] - 0s 178us/sample - loss: 0.0283 - mean_absolute_error: 0.1172輸出:[[ 8.6036199e-01 4.6452054e-01 1.3958054e-02 -2.3673278e-01 3.2733783e-02] [ 9.7470945e-01 4.6182287e-01 6.4254209e-02 -2.0704785e-01 -2.0927802e-02] ... [ 7.7844203e-01 4.5801651e-01 -2.5306268e-02 -2.8805625e-01 4.5798883e-02]]
1 回答

qq_笑_17
TA貢獻1818條經驗 獲得超7個贊
您得到負輸出是因為您沒有在最后一層指定激活,這意味著默認情況下它被設置為None
線性激活函數,因此獲得負輸出的概率不為零。
在第一層中,您選擇sigmoid
作為激活函數,因此無論輸入是什么,它都會產生正值,然后負數來自連接第一層和第二層的權重,它們應該具有負權重,并且具有合適的輸入它可以產生負數。
添加回答
舉報
0/150
提交
取消