Keras平坦和GRU input_shape接收相同输入的差异

icomxhvb  于 2023-01-05  发布在  其他
关注(0)|答案(1)|浏览(168)

我正在看一本书中的一个例子。输入是形状(样本=128,时间步长=24,特征=13)。当定义两个不同的网络时,它们都接收相同的输入,它们在平面和GRU层上具有不同的input_shape。
模型1:

model = Sequential()
model.add(layers.Flatten(input_shape=(24, 13)))
model.add(layers.Dense(32, activation='relu'))
model.add(layers.Dense(1))

模式2:

model = Sequential()
model.add(layers.GRU(32, input_shape=(None, 13)))
model.add(layers.Dense(1))

我知道input_shape表示单个输入的形状(不考虑批量大小),所以根据我的理解,两种情况下的input_shape都应该是(24,13)。
为什么模型1和模型2的input_shape不同?

kt06eoxx

kt06eoxx1#

GRU是一个循环单元(RNN),它将数据序列作为输入。GRU的预期输入形状为(批大小、序列长度、特征大小)。在您的示例中,序列长度为24,特征大小为13。
像往常一样,你不需要为input_shape参数指定批大小。另外,对于像GRU或LSTM这样的重复单元,你可以使用“None”代替序列长度,这样它就可以接受任何长度的序列。这就是为什么这里允许“input_shape=(None,13)”。

相关问题