我有一个训练有素的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)
虽然保存的模型给了我很好的性能,但是这个代码没有很好的训练,也没有达到预期的性能。 我能做些什么来获得更好的结果?你知道吗
我不能说你的最终模型有什么不好的表现,因为这可能是由于各种原因造成的,而这从你的问题的内容来看并不明显。但要回答您最初的问题:是的,您可以这样使用
for
循环,因为您实际上是在创建层/张量并将它们相互连接(即构建模型的图形)。所以这是一个有效的做法。问题可能在其他地方,例如错误的索引、错误的损失函数等此外,您可以用更简单的方法构建最终模型。您已经有了一个经过训练的模型,它获取shape} 包装器可以很容易地做到这一点:
(batch_size, 2)
的输入并给出shape(batch_size, 8)
的输出。现在您要构建一个模型,该模型接受形状(batch_size, 2, 16)
的输入,将已经训练好的模型应用于16(batch_size, 2)
段中的每一个,然后连接结果。使用^{相关问题 更多 >
编程相关推荐