簡體   English   中英

如何為深度學習設置激活或優化器 model 只接受 RNN 的 1,0

[英]How to set activation or optimiser for deeplearning model only accept 1,0 for RNN

例如

我有這樣的時間序列數據

[[1,0,0,0] [1,0,0,1],[1,0,1,0],[1,1,0,0]],,,,

它從過去的兩個預測下一個。

我想輸入[[1,0,0,0],[1,0,0,1]]並得到[1,0,1,0]

所以我像下面這樣制作了 model。

input_len = 2
n_in = 4
n_hidden = 512
model = Sequential()

model.add(LSTM(n_hidden, input_shape=(input_len,n_in), return_sequences=True))
        
model.add(Dropout(0.1))
model.add(LSTM(n_hidden,  return_sequences=False))
        
model.add(Dense(n_hidden, activation="linear")) 
        
model.add(Dense(n_in, activation="linear"))
opt = Adam(lr=0.001)
model.compile(loss='mse', optimizer=opt)
model.summary()

#trainning and validate data 

X     #X.shape (800, 2, 4) [ [[1,0,0,1],[1,0,0,1]],[[1,0,0,1],[1,0,0,0]],,,
Y     #Y.shape (200, 2, 4)
val_x #val_x.shape (800,1,4) [[1,0,1,0]][1,1,1,0],,,,
val_y #val_y.shape (200,1,4)

history = model.fit(x, y, epochs=50,validation_data=(val_x, val_y))

#then predict
in_ = np.array[[1,0,0,1][1,1,1,1]]
out_ = model.predict(in_)
print(out_)

我希望結果至少為10

但是我得到這樣的數字[[4.9627638e-01 1.4797167e-01 3.3314908e-01 1.3892795e-04]]

我想這與activationoptimizer有關......

我對么? 或者我應該如何處理 1 和 0 數據?


linear更改為relu

結果變為[0.41842282 0.1275532 0. 0.4288069]

但是它仍然不是 0 或 1....

Model output 不能是離散的,因為它應該是可微的。 嘗試添加類似的內容:

out_ = tf.cast(tf.math.greater(out_, 0.5), tf.int32)

這不是正確的預測,但准確性取決於您的數據(例如,如果您的數據是隨機的並且沒有模式 - 那么您將獲得 6% 的准確性)。 嘗試僅基於[[1,0,0,0] [1,0,0,1],[1,0,1,0]]進行訓練,以確保您的 model 正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM