Форма вывода встраиваемого слоя - 2D - PullRequest
0 голосов
/ 22 марта 2020

Я столкнулся с некоторой проблемой с выходной формой моего встраиваемого слоя, согласно документации keras, у встраиваемого слоя должна быть выходная форма 3D-тензора, но у моего встраиваемого слоя только выводится 2D-тензор.

class MyModel(Model):
  def __init__(self, vocab_size, embedding_matrix, max_length):
      super(MyModel, self).__init__()
      self.embedding_l1 = tf.keras.layers.Embedding(input_dim=vocab_size,
                                                    output_dim=max_length, 
                                                    input_length=max_length,
                                                    weights=[embedding_matrix], 
                                                    trainable=False)
      self.bidirectional_l1 = Bidirectional(
                             tf.compat.v1.keras.layers.CuDNNLSTM(32, 
                                                                 return_sequences=False))
      self.dense_l1 = Dense(units=256, activation='relu')
      self.dropout_l1 = Dropout(rate=2e-5)
      self.dense_l2 = Dense(units=1, activation='sigmoid')

  def call(self, x):
      embedding_out = self.embedding_l1(x)
      print("SHAPE:",embedding_out.shape)
      bid_out1 = self.bidirectional_l1(self.reshape_l1(embedding_out))
      dense_out1 = self.dense_l1(bid_out1)
      drop_out1 = self.dropout_l2(dense_out1)
      dense_out2 = self.dense_l2(drop_out2)
      return dense_out2

Выводит форму вложенного слоя в виде 2D (300,300) тензора. что вызывает ошибку в двунаправленном lstm:

ValueError: Input 0 of layer bidirectional is incompatible with the layer: expected ndim=3, found ndim=2. Full shape received: [300, 300]

1 Ответ

0 голосов
/ 23 марта 2020

Выяснил, что это входной слой на уровне встраивания. Я не включил размер пакета, поэтому он выглядит как [batch_size, 300] для ввода для встраивания вместо [, 300].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...