我正在尝试构建一个基本上是序列到序列模型的模型,但我有一个特殊的编码器,即“辅助编码器”。
辅助编码器中的时间步长 = 300
这个编码器有一个特殊的属性,本质上它是一个GRU,但是在每个时间步都需要改变GRUCell产生的隐藏状态,需要添加另一个变量,然后这个组合(新的隐藏状态)是传递给下一个 GRUCell,它使用这个作为 initial_state........这个东西重复了 300 次。
由于需要 300 个 GRUCell(每个时间步一个),因此对 300 层中的每一层进行硬编码并创建模型是不可行的。所以,我需要帮助来弄清楚如何编写一个循环来在 keras 中实现这个东西,或者如何创建一个自定义层(如果这是一个更好的选择)。
我的想法(伪代码):-
这里alpha是我要添加的变量
x = Input(shape=...)
encoder_cell = GRU(10,return_state=True)
init_state = xxxx //some value to give as initialiser to first GRU cell
for t in range(300):
_,hstate = encoder_cell(x[t],initial_state = init_state)
init_state = hstate + alpha
model = Model(inputs = x, outputs = init_state)
这行得通吗?该模型是否能够解释它需要在每个训练示例中循环 300 次?
这个模型很大,它有跳过连接和许多其他的东西,这就是为什么我需要你的帮助来解决我的问题的这个子集,然后我才实现其余的,请忽略语法,这只是伪代码。
另外,我需要再次调用这个模型,所以我认为迭代方式会大大减慢这个过程,对吧?