Когда я пытался узнать больше о НЛП, я понял, что люди используют потерю NCE без определения подключенного NN. Чтобы быть более конкретным:
# Define Embeddings:
embeddings = tf.Variable(tf.random_uniform([vocabulary_size, embedding_size], -1.0, 1.0))
# NCE loss parameters
nce_weights = tf.Variable(tf.truncated_normal([vocabulary_size, embedding_size],
stddev=1.0 / np.sqrt(embedding_size)))
nce_biases = tf.Variable(tf.zeros([vocabulary_size]))
# Create data/target placeholders
x_inputs = tf.placeholder(tf.int32, shape=[batch_size])
y_target = tf.placeholder(tf.int32, shape=[batch_size, 1])
valid_dataset = tf.constant(valid_examples, dtype=tf.int32)
# Lookup the word embedding:
embed = tf.nn.embedding_lookup(embeddings, x_inputs)
# Get loss from prediction
loss = tf.reduce_mean(tf.nn.nce_loss(weights=nce_weights,
biases=nce_biases,
labels=y_target,
inputs=embed,
num_sampled=num_sampled,
num_classes=vocabulary_size))
Вместо этого, почему люди не определяют подключенный NN и a с сигмоидом в качестве функции активации на последнем уровне? Будет ли мое предложение считаться выполнимым, если мы будем использовать однократное кодирование, и не уместно в представлении наиболее часто встречающихся значений? Прошу прощения, если мой вопрос немного тупой, поскольку я еще не так хорошо знаком с НЛП.
Спасибо