0
我想重寫一段使用Keras的tflearn代碼。如何使用特定的權重和偏置在keras中組合兩層?
目標是結合兩個輸入,其中一個輸入跳過第一個層。下面的代碼在tflearn:
# Two different inputs.
inputs = tflearn.input_data(shape=[None, 10])
action = tflearn.input_data(shape=[None, 10])
#First layer used only by the inputs
net = tflearn.fully_connected(inputs, 400, activation='relu')
# Add the action tensor in the 2nd hidden layer
# Use two temp layers to get the corresponding weights and biases
t1 = tflearn.fully_connected(net, 300)
t2 = tflearn.fully_connected(action, 300)
# Combine the two layers using the weights from t1 and t2 and the bias from t2
net = tflearn.activation(tf.matmul(net,t1.W) + tf.matmul(action, t2.W) + t2.b, activation='relu')
我嘗試使用下面的代碼複製在Keras驗證碼:
# Two different inputs.
inputs = tf.placeholder(tf.float32, [None, 10])
action = tf.placeholder(tf.float32, [None, 10])
#First layer used only by the inputs
t1 = Sequential()
t1.add(Dense(400, activation='relu', input_shape=(1,10)))
# Add the action tensor in the 2nd hidden layer
# Use two temp layers to get the corresponding weights and biases
t1.add(Dense(300))
t2 = Sequential()
t2.add(Dense(300, input_shape=(1,10)))
# Combine the two layers
critnet = Sequential()
critnet.add(Merge([t1, t2], mode='sum'))
critnet.add(Activation('relu'))
# Create the net using the inputs and action placeholder
net = critnet([inputs, action])
在keras的代碼具有不同的行爲。如何結合keras中的兩個層以獲得與tflearn中相同的結果?
不確定你的行爲有什麼不同,但這兩個代碼是非常不同的。首先在tflearn代碼中添加一個偏差項(keras代碼中不存在)。然後,tflearn代碼以ReLU激活結束(可以通過.add(激活('relu')))添加到keras中)。 「使用兩個臨時層來獲得相應的權重和偏見」對此沒有任何意義。 – maz
謝謝。 relu激活層確實缺失。我已經添加了它。 評論''使用兩個臨時層來獲得相應的權重和偏差''這意味着我們可以使用t1和t2中的權重和偏差來組合它們並形成一個新層。 在Keras中,我們可以使用Merge合併圖層,如代碼中所示,但是有什麼方法可以合併它們,就像它在tflearn代碼中完成的一樣。 –