Я строю модель тензорного потока в Google Colab. я путаюсь с поведением встраиваемого слоя. он продолжает уменьшать размер входного слоя до половины.
def build_model(vocab_size, embedding_dim, rnn_units, batch_size):
model = tf.keras.Sequential([
tf.keras.layers.Embedding(vocab_size, embedding_dim,
batch_input_shape=[batch_size, 100]),
tf.keras.layers.GRU(rnn_units,
return_sequences=True,
stateful=True,
recurrent_initializer='glorot_uniform'),
tf.keras.layers.Dense(vocab_size)
])
return model
model = build_model(
vocab_size = len(vocab),
embedding_dim=embedding_dim,
rnn_units=rnn_units,
batch_size=BATCH_SIZE)
model.compile(optimizer='adam', loss=loss)
, и вот входные данные.
dataset = helperDf(df, 64,100)
набор данных - это пакетный вспомогательный класс. каждый раз, когда он вызывается, он возвращает массив с двумя тензорными размерами [(64,100), (64,100)] для поезда и метки.
вызов
example_batch_predictions = model(dataset.batch())
print(example_batch_predictions.shape, "# (batch_size, sequence_length, vocab_size)")
возвращает штраф. с (64, 100, 48) # (batch_size, sequence_length, vocab_size)
однако, когда я звоню:
history = model.fit(dataset.batch(), epochs=EPOCHS, callbacks=[checkpoint_callback])
Возвращается:
WARNING:tensorflow:Model was constructed with shape (64, 100) for input Tensor("embedding_4_input:0", shape=(64, 100), dtype=float32), but it was called on an input with incompatible shape (32, 100).
, почему он определяет вход как 32, а не 64?
* привет * 1023