初学者问题
使用Keras,我有一个顺序的CNN模型,该模型根据图像(输入)预测[3 * 1](回归)大小的输出。
如何实现RNN,以便将模型的输出作为第二个输入添加到下一步。 (这样我们就有2个输入:图像和前一个序列的输出)?
str(mtcars['mpg'])
#'data.frame': 32 obs. of 1 variable:
#$ mpg: num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
str(mtcars$mpg)
#num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
答案 0 :(得分:1)
我发现的最简单的方法是直接扩展Model
。以下代码将在TF 2.0中运行,但在旧版本中可能无法运行:
class RecurrentModel(Model):
def __init__(self, num_timesteps, *args, **kwargs):
self.num_timesteps = num_timesteps
super().__init__(*args, **kwargs)
def build(self, input_shape):
inputs = layers.Input((None, None, input_shape[-1]))
x = layers.Conv2D(64, (3, 3), activation='relu'))(x)
x = layers.MaxPooling2D((2, 2))(x)
x = layers.Flatten()(x)
x = layers.Dense(3, activation='linear')(x)
self.model = Model(inputs=[inputs], outputs=[x])
def call(self, inputs, **kwargs):
x = inputs
for i in range(self.num_timestaps):
x = self.model(x)
return x