【发布时间】:2021-10-02 18:04:51
【问题描述】:
鉴于以下model:
Layer (type) Output Shape Param #
=================================================================
input_91 (InputLayer) [(None, 25)] 0
_________________________________________________________________
token_and_position_embedding (None, 25, 400) 5938800
_________________________________________________________________
transformer_block_97 (Transf (None, 25, 400) 74832
_________________________________________________________________
global_average_pooling1d_82 (None, 400) 0
_________________________________________________________________
dropout_337 (Dropout) (None, 400) 0
_________________________________________________________________
dense_339 (Dense) (None, 25) 22575
_________________________________________________________________
dropout_338 (Dropout) (None, 25) 0
_________________________________________________________________
dense_340 (Dense) (None, 25) 570
=================================================================
Total params: 3,709,907
Trainable params: 3,709,907
Non-trainable params: 0
在keras中,如何将输出层改为(None, 25, 7)维度?这是当前的模型配置:
embed_dim = 400 # Embedding size for each token
num_heads = 2 # Number of attention heads
ff_dim = 32 # Hidden layer size in feed forward network inside transformer
inputs = layers.Input(shape=(25,))
embedding_layer = TokenAndPositionEmbedding(maxlen, vocab_size, embed_dim)
X = embedding_layer(inputs)
transformer_block = TransformerBlock(embed_dim, num_heads, ff_dim)
X = transformer_block(X)
X = layers.GlobalAveragePooling1D()(X)
X = layers.Dropout(0.1)(X)
X = layers.Dense(25, activation="relu")(X)
X= layers.Dropout(0.1)(X)
outputs = layers.Dense(25, activation="softmax")(x)
【问题讨论】:
-
为什么是 25 x 7?每个数字代表什么?
-
@DavidKaftanit 只是一个假设的例子。我想知道如何在一般情况下重塑输出(如果可能的话)
-
您所做的不仅仅是重塑。您正在将元素数量从 25 更改为
25 x 7。您是否认为您只想复制 25 个元素层 7 次?还是有错字,您的意思是“重塑为 (None, 5, 5)”? -
是的,我想说
(None, 5, 5)是一个错字。知道怎么做吗?我尝试修改输入但是,当我这样做时我的模型不起作用
标签: python numpy tensorflow keras deep-learning