У меня есть слой с (?, 12,256) формой, я хочу уменьшить эту форму до (?, 256), я использовал tf.Измените, но я обнаружил ошибки в model.fit ():
InvalidArgumentError: Вы должны передать значение для тензора заполнителя 'Placeholder_53' с плавающей точкой dtype и формой [?, 12,256] [[{{node Placeholder_53}}]]
latent_dim =256
x=encoder_outputs
x=tf.placeholder(dtype=tf.float32, shape=(None, 12, 256))
input2 = tf.reshape(x, shape=[tf.shape(x)[0],256]) +
# output layer for mean and log variance
z_mu = Dense(latent_dim)(input2) #remplacer h
z_log_var = Dense(latent_dim)(input2)
def sampling(args):
batch_size=1
z_mean, z_log_sigma = args
epsilon = K.random_normal(shape=(batch_size, latent_dim),
mean=0., stddev=1.)
return z_mean + K.exp(z_log_sigma/2) * epsilon
z = Lambda(sampling, output_shape=(None,))([z_mu, z_log_var])
state_h= z
state_c = z
encoder_states = [state_h, state_c]
def vae_loss(y_true, y_pred):
recon = K.sum(K.binary_crossentropy(y_pred, y_true), axis=-1)
kl = 0.5 * K.sum(K.exp(z_log_var) + K.square(z_mu) - 1. - z_log_var, axis=-1)
return recon + kl[:, None]
decoder_inputs = Input(shape=(None,))
decoder_emb = Embedding(input_dim=vocab_out_size,
output_dim=embedding_dim)
decoder_lstm = LSTM(units=units, return_sequences=True, return_state=True)
decoder_lstm_out, _, _ = decoder_lstm(decoder_emb(decoder_inputs), initial_state=encoder_states)
# Attention layer
attn_layer = AttentionLayer(name='attention_layer')
attn_out, attn_states = attn_layer([encoder_outputs, decoder_outputs])
decoder_concat_input = Concatenate(axis=-1, name='concat_layer')
([decoder_outputs, attn_out])
decoder_d2 = Dense(vocab_out_size, activation="softmax")
dense_time = TimeDistributed(decoder_d2 , name='time_distributed_layer')
decoder_out = dense_time(decoder_concat_input)
model = Model([encoder_inputs, decoder_inputs], decoder_out)
model.compile(optimizer='adam', loss=vae_loss, metrics=['acc'])
model.summary()
history = model.fit([input_data, teacher_data], target_data,
batch_size=BATCH_SIZE,
epochs=3,
validation_split=0.2)
форма encoder_outputs: (Нет, 12,256). Итак, есть другой способ сделать это?
Заранее спасибо