РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗pytfPmSvLd 90 of 91 menu
◀ ▶

Чтение весов в TensorFlow

Если собрать модель с той же формой слоями, что и при записи, параметры с диска подставляет метод load_weights. Путь к файлу должен указывать на результат метода save_weights.

Сохраним список параметров, запишем его в файл, создадим вторую модель и загрузим числа обратно. Сравним одну ячейку матрицы до и после чтения с тем, что было сохранено:

import tensorflow as tf tf.keras.utils.set_random_seed(0) model = tf.keras.Sequential([ tf.keras.layers.Dense(2, input_shape=(3,)), ]) model(tf.constant([[1.0, 2.0, 3.0]])) stored = model.get_weights() model.save_weights("weights.weights.h5") tf.keras.utils.set_random_seed(1) other = tf.keras.Sequential([ tf.keras.layers.Dense(2, input_shape=(3,)), ]) other(tf.constant([[0.0, 0.0, 0.0]])) other.load_weights("weights.weights.h5") print(other.get_weights()[0][0, 0]) print(stored[0][0, 0]) # выведет 0.034362674 # выведет 0.034362674

Читать можно и после того, как новая модель уже обработала данные со своими начальными числами: загрузка заменит параметры содержимым файла. Имя файла в примере короткое, он лежит в рабочей папке запуска.

import tensorflow as tf tf.keras.utils.set_random_seed(0) source = tf.keras.Sequential([ tf.keras.layers.Dense(1, input_shape=(2,)), ]) source(tf.constant([[1.0, 0.0]])) snapshot = source.get_weights() source.save_weights("one.weights.h5") target = tf.keras.Sequential([ tf.keras.layers.Dense(1, input_shape=(2,)), ]) target(tf.constant([[5.0, 5.0]])) target.load_weights("one.weights.h5") print(target.get_weights()[0][0, 0]) print(snapshot[0][0, 0]) # выведет 0.04436207 # выведет 0.04436207

Подготовьте модель с одним блоком на 2 выхода для трёх признаков. Сохраните параметры в lab.weights.h5, соберите вторую такую же цепочку, прогоните любую строку и подставьте числа из файла. Выведите элемент [0, 0] матрицы первого слоя.

Запишите параметры модели с блоком на 1 выход для 4 признаков после одного прогона в tiny.weights.h5. Создайте новую модель той же формы, загрузите файл и выведите единственное смещение блока.

Соберите двухслойную цепочку: сначала 2 выхода для 3 признаков, затем 1 выход, сохраните веса в pair.weights.h5. На копии модели прочитайте файл и выведите форму матрицы первого блока после подстановки.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить