Список весов в TensorFlow
Чтобы прочитать все обучаемые числа
модели разом, служит метод
get_weights. Он возвращает
список массивов NumPy: для каждого
слоя - столько элементов, сколько у
него тензоров параметров.
Соберём короткую цепочку, прогоним одну строку, чтобы параметры создались, и выведем длину списка и тип первого массива:
import tensorflow as tf
tf.keras.utils.set_random_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(2, input_shape=(3,)),
])
row = tf.constant([[1.0, 2.0, 3.0]])
model(row)
weights = model.get_weights()
print(len(weights))
print(type(weights[0]).__name__)
# выведет 2
# выведет ndarray
У полносвязного блока в списке обычно матрица связей и столбец смещений. Если слоёв несколько, массивы идут в том же порядке, что и блоки в модели:
import tensorflow as tf
tf.keras.utils.set_random_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(3, input_shape=(2,)),
tf.keras.layers.Dense(1),
])
table = tf.constant([[1.0, 0.0], [0.0, 1.0]])
model(table)
weights = model.get_weights()
print(len(weights))
print(weights[0].shape)
print(weights[1].shape)
# выведет 4
# выведет (2, 3)
# выведет (3,)
Соберите цепочку из одного
полносвязного блока на 4
выхода для строки из 5
признаков. Прогоните строку
[0.0, 1.0, -1.0, 0.5, 2.0]
и выведите, сколько массивов
в списке параметров модели.
Задайте модель: первый блок на
2 числа для входа длины
3, второй - на одно число.
Подайте таблицу из одной строки
[1.0, 0.0, -1.0] и выведите
форму первого массива в списке
параметров.
Создайте цепочку с одним блоком
на 3 выхода и входом
длины 2. После одного
прогона выведите форму второго
массива в списке параметров
модели.