为什么我的 Sequential API 中的 SimpleRNN 模型显示“?”使用嵌入层时的输出形状和零可训练参数?

问题描述 投票:0回答:1

我正在 Keras 中构建带有嵌入层的 SimpleRNN 模型,并在使用 Sequential API 时遇到问题。模型摘要显示输出形状为?可训练参数的数量为 0。但是,当我使用功能 API 构建相同的模型时,一切都按预期工作。

from keras.models import Sequential
from keras.layers import Embedding, SimpleRNN, Dense

model = Sequential([
    Embedding(input_dim=10000, output_dim=50, input_length=100),
    SimpleRNN(32),
    Dense(1, activation='sigmoid')
])

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.summary()

我得到以下输出:

Output shape: ?
Trainable parameters: 0(unbuilt)

但是,当我使用Functional API时,像这样:

from keras.models import Model
from keras.layers import Input, Embedding, SimpleRNN, Dense

inputs = Input(shape=(100,))
x = Embedding(input_dim=10000, output_dim=50)(inputs)
x = SimpleRNN(32)(x)
outputs = Dense(1, activation='sigmoid')(x)

model = Model(inputs, outputs)
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.summary()

该模型在正确的输出形状和可训练参数的情况下运行良好。

任何人都可以解释为什么 Sequential API 会发生这种情况以及如何解决这个问题吗?我是否在顺序配置中遗漏了某些内容?

python keras recurrent-neural-network word-embedding
1个回答
0
投票

这个问题是因为模型还没有建立起来。要获得所需的输出形状,您需要首先通过调用

build()
或向其提供一些输入数据来构建模型,然后重新编译模型。

请检查以下代码行以获得所需的输出:

构建模型
model.build(input_shape=(None, 10))

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.summary()

输出:

Model: ""sequential_1""
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓
┃ Layer (type)                         ┃ Output Shape                ┃         Param # ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩
│ embedding_2 (Embedding)              │ (None, 10, 50)              │         500,000 │
├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤
│ simple_rnn_2 (SimpleRNN)             │ (None, 32)                  │           2,656 │
├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤
│ dense_2 (Dense)                      │ (None, 1)                   │              33 │
└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘
 Total params: 502,689 (1.92 MB)
 Trainable params: 502,689 (1.92 MB)
 Non-trainable params: 0 (0.00 B)"
© www.soinside.com 2019 - 2024. All rights reserved.