Весами модели являются все параметры (включая обучаемые и не обучаемые) модели, которые, в свою очередь, являются всеми параметрами, используемыми в слоях модели.И да, для слоя свертки, который будет иметь вес фильтра и смещения.
На самом деле, вы можете видеть их для каждого слоя: попробуйте model.layers[layer_index].get_weights()
, и вы получите вес этого слоя.Когда вы вызываете save_weights()
, на самом деле это вывод get_weights()
, вызываемый на каждом из слоев, хранящихся в файле.
Например, для слоя свертки, метод get_weights()
возвращает список сдва элемента, которые соответствуют весам фильтра и уклонам.Вот пример:
model = Sequential()
model.add(Conv2D(5, (3,3), input_shape=(100, 100, 3)))
filters, biases = model.layers[0].get_weights()
>>> filters.shape
(3, 3, 3, 5) <--- 5 filters of shape (3, 3, 3)
>>> biases.shape
(5,) <--- one bias parameter for each filter
>>> filters[:, :, :, 0] # get the first filter's weights
array([[[-0.26788074, -0.20213448, 0.06233829],
[ 0.08651951, 0.21303588, 0.08127764],
[ 0.04672694, -0.24589485, -0.12873489]],
[[ 0.10841686, 0.24839908, -0.07466605],
[-0.26903206, -0.0341135 , 0.15083215],
[-0.07382561, -0.00576964, -0.25354072]],
[[-0.02937067, 0.22315139, -0.12964793],
[ 0.23371089, 0.19973844, -0.00728002],
[-0.2748396 , -0.02097657, 0.22772402]]], dtype=float32)