【发布时间】:2019-08-09 10:20:45
【问题描述】:
我有一个训练有素的 keras 模型,它接受大小 (batchSize,2) 的输入。这效果很好,效果也很好。
我的主要问题是有一个模型,它接受一个大小为 (batchSize,2,16) 的向量的输入,并在模型内部将其切片为 16 个大小为 (batchSize,2) 的向量,然后将输出连接在一起。
我已经使用了这个代码
y = layers.Input(shape=(2,16,))
model_x= load_model('saved_model')
for i in range(16):
x_input = Lambda(lambda x: x[:, :, i])(y)
if i == 0:
x_output = model_x(x_input)
else:
x_output = layers.concatenate([x_output,
model_x(x_input)])
x_output = Lambda(lambda x: x[:, :tf.cast(N, tf.int32)])(x_output)
final_model = Model(y, x_output)
虽然保存的模型给了我很好的性能,但这段代码没有很好地训练,也没有达到预期的性能。 我该怎么做才能获得更好的结果?
【问题讨论】:
-
请注意:如果您只想将
[2,16]展平为[2*16]向量(即连接后的结果),您只需重塑输入 -
@GPhilo 实际上不清楚你在说什么。主模型的输入是 [2,16,],经过训练的模型采用 [2,] 的输入和大小 [8, ] 的输出。所以我将我的 [2,16] 输入分成 16 个切片,并在最后连接大小为 [8,] 的输出。 16 次迭代后,它会给出一个 [128, ] 的向量。我想添加另一个用 keras 编写的模块(不是 NN),它将大小为 128 的 x_output 作为输入和 128 的输出,用于计算我想要的损失函数。
-
哦哦,这更有意义了,我知道您想重新排列您的数据以使其与第二个模型兼容。
标签: python machine-learning keras keras-layer