我有一个简单的完全连接模型,如下所示,
import keras.backend as K
from keras.layers import Dense, Activation, Lambda,
def ModelX(m):
hidden1 = 8
hidden2 = 8
hidden3 = 8
model_input = layers.Input(shape=(2,))
hidden_layer1 = Dense(hidden1, activation='relu')(model_input)
hidden_layer2 = Dense(hidden2, activation='relu')(hidden_layer1)
hidden_layer3 = Dense(hidden3, activation='relu')(hidden_layer2)
model_output = Dense(m, activation='linear')(hidden_layer3)
modelx = Model(inputs=model_input, outputs=model_output)
return modelX
我有一个长度为(2, N)
的输入数据序列。我想拥有一个ModelX的N
长度数组,以便输入序列的每个(2,1)
切片都是每个模型的输入。最后,这些模型的输出将被串联在一起以形成4N
长度序列。
PS:keras.layers.TimeDistributed()
不是我所期望的。我想将输入的每个部分输入到同一模型的不同副本中,并分别进行训练。我该如何实现?
这是我到目前为止所做的,
def Model_Array(Config):
N = Config.N
y = layers.Input(shape=(2,N,))
for i in range(N):
x_input = Lambda(lambda x: x[:, :, i])(y)
if i == 0:
x_output = Modelx(Config.m)(x_input)
else:
x_output = layers.concatenate([x_output,
Modelx(Config.m)(x_input)])
x_output = Lambda(lambda x: x[:, :tf.cast(N, tf.int32)])(x_output)
output = SomeOtherModel(Config)(x_output)
output = Lambda(lambda x: K.sigmoid(-x))(output)
model = Model(y, output)
return model
但是此模型不能提供预期的性能