Вы должны указать значение для тензора-заполнителя для модели кодер-декодер - PullRequest
0 голосов
/ 02 мая 2019

У меня есть слой с (?, 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). Итак, есть другой способ сделать это?

Заранее спасибо

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