В настоящее время я работаю над задачей прогнозирования последовательности, используя RNN с TensorFlow. сталкиваюсь с проблемами во время обучения, которые, по моему мнению, связаны с взрывным градиентом.
потеря иногда достигает чрезвычайно высоких значений (например, на несколько порядков выше, чем первоначальная потеря). Градиенты кажутся чрезмерными
import tensorflow as tf
class SimpleRNNModel(tf.keras.Model):
def __init__(self, input_size, hidden_size, output_size):
super(SimpleRNNModel, self).__init__()
self.rnn = tf.keras.layers.SimpleRNN(hidden_size, return_sequences=True)
self.dense = tf.keras.layers.Dense(output_size)
def call(self, x):
rnn_out = self.rnn(x)
return self.dense(rnn_out)
input_size = 10
hidden_size = 20
output_size = 1
learning_rate = 0.001
epochs = 100
model = SimpleRNNModel(input_size, hidden_size, output_size)
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate), loss='mean_squared_error')
for epoch in range(epochs):
with tf.GradientTape() as tape:
predictions = model(data)
loss = tf.keras.losses.mean_squared_error(labels, predictions)
gradients = tape.gradient(loss, model.trainable_variables)
if any(tf.reduce_max(tf.abs(grad)) > 1e5 for grad in gradients):
print("Exploding gradients detected. Adjusting learning rate.")
clipped_gradients = [tf.clip_by_value(grad, -1e5, 1e5) for grad in gradients]
else:
clipped_gradients = gradients
model.optimizer.apply_gradients(zip(clipped_gradients, model.trainable_variables))
print(f"Epoch {epoch}: Loss = {loss.numpy().mean()}")
Подробнее здесь: https://stackoverflow.com/questions/790 ... onvergence
Обучение RNN — градиенты и сходимость моделей ⇐ Python
Программы на Python
-
Anonymous
1727399328
Anonymous
В настоящее время я работаю над задачей прогнозирования последовательности, используя RNN с TensorFlow. сталкиваюсь с проблемами во время обучения, которые, по моему мнению, связаны с взрывным градиентом.
потеря иногда достигает чрезвычайно высоких значений (например, на несколько порядков выше, чем первоначальная потеря). Градиенты кажутся чрезмерными
import tensorflow as tf
class SimpleRNNModel(tf.keras.Model):
def __init__(self, input_size, hidden_size, output_size):
super(SimpleRNNModel, self).__init__()
self.rnn = tf.keras.layers.SimpleRNN(hidden_size, return_sequences=True)
self.dense = tf.keras.layers.Dense(output_size)
def call(self, x):
rnn_out = self.rnn(x)
return self.dense(rnn_out)
input_size = 10
hidden_size = 20
output_size = 1
learning_rate = 0.001
epochs = 100
model = SimpleRNNModel(input_size, hidden_size, output_size)
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate), loss='mean_squared_error')
for epoch in range(epochs):
with tf.GradientTape() as tape:
predictions = model(data)
loss = tf.keras.losses.mean_squared_error(labels, predictions)
gradients = tape.gradient(loss, model.trainable_variables)
if any(tf.reduce_max(tf.abs(grad)) > 1e5 for grad in gradients):
print("Exploding gradients detected. Adjusting learning rate.")
clipped_gradients = [tf.clip_by_value(grad, -1e5, 1e5) for grad in gradients]
else:
clipped_gradients = gradients
model.optimizer.apply_gradients(zip(clipped_gradients, model.trainable_variables))
print(f"Epoch {epoch}: Loss = {loss.numpy().mean()}")
Подробнее здесь: [url]https://stackoverflow.com/questions/79029468/rnn-training-gradients-and-model-convergence[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия