Nano Hash - криптовалюты, майнинг, программирование

изменить проекционный слой для seq2seq в tensorflow – python

Я пытаюсь изменить проекционный слой моей модели NMT (нейронный машинный перевод). Я хочу иметь возможность обновлять количество единиц без повторной инициализации всех весов. Я следовал руководству из руководства по tensorflow NMT, которое можно найти здесь. Вот код моего декодера:

# Decoder
train_decoder = tf.contrib.seq2seq.BasicDecoder(
    decoder_cell, train_helper, decoder_initial_state)

maximum_iterations = tf.round(tf.reduce_max(encoder_input_lengths) * 2)

# Dynamic decoding
train_outputs, _, _ = tf.contrib.seq2seq.dynamic_decode(train_decoder)

# Projection layer -- THIS IS WHAT I WANT TO MODIFY
projection_layer = layers_core.Dense(
    len(language_base.vocabulary), use_bias=False)

train_logits = projection_layer(train_outputs.rnn_output)

train_crossent = tf.nn.sparse_softmax_cross_entropy_with_logits(
    labels=decoder_outputs, logits=train_logits)

# Target weights
target_weights = tf.sequence_mask(
    decoder_input_lengths, params.tgt_max_len, dtype=train_logits.dtype)
target_weights = tf.transpose(target_weights)

# Loss function
train_loss = (tf.reduce_sum(train_crossent * target_weights) /
    tf.to_float(params.batch_size))

# Calculate and clip gradients
train_vars = tf.trainable_variables()
gradients = tf.gradients(train_loss, train_vars)
clipped_gradients, _ = tf.clip_by_global_norm(
    gradients, params.max_gradient_norm)

# Optimization
optimizer = tf.train.AdamOptimizer(params.learning_rate)
update_step = optimizer.apply_gradients(
    zip(clipped_gradients, train_vars))

Ответы:


1

Tensorflow на самом деле не позволяет вам без особых усилий изменить форму переменной (которая здесь связана с количеством единиц).

Вместо этого вам лучше предварительно выделить большее, чем обычно, количество единиц и замаскировать единицы, которые вы не используете, равными 0 на ранних этапах обучения, и обновлять свою маску по мере продвижения (используйте переменную для хранения маски для облегчения обновления).

21.03.2018
  • Что произойдет, если я заново создам проекционный слой... Повлияет ли это на точность моей модели... Я использую двунаправленный динамический кодировщик и декодер в качестве ядра модели... Я пытаюсь сделать чат-бота 22.03.2018
  • Если вы воссоздаете слой, у вас будет небольшая потеря производительности, и вам придется вручную копировать веса. 23.03.2018
  • Я не возражаю против снижения производительности... как мне скопировать веса? 23.03.2018
  • Вам нужно будет взять старые, соединить с ними что-то и присвоить результат новым. 23.03.2018
  • Если я создам новый слой, а затем скопирую веса, как я могу удалить старые? 23.03.2018
  • Они будут течь; это часть штрафа за производительность, который вы заплатите при таком подходе. 23.03.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..