Что означает отдельные веса «смещения», хранящиеся в модели Keras?

#python #tensorflow #keras #conv-neural-network #tf.keras

Вопрос:

После редактирования: Оказывается, я запутался, постоянно играя с тремя функциями ниже.

 model.weights
model.get_weights()
model.layer(i).get_weights()
 
  1. model.layer(i).get_weights() возвращает два отдельных массива (без каких-либо тегов) , которые являются kernel и bias если в модели существует смещение.
  2. model.get_weights() напрямую возвращает все веса без каких-либо тегов.
  3. model.weights возвращает веса и немного информации, например, name о слое, к которому он принадлежит, и его shape . Я использовал это для эксперимента в вопросе.

Что меня смутило, так это просто 1 и 3 выше.

Примечание: Я решил не удалять вопрос, потому что он получил ответ, и с последующим редактированием он все еще может кому-то помочь.


Вопрос был в следующем…

После сохранения модели Keras, когда я проверяю веса, я замечаю 2 отдельных смещения.

Ниже приведена часть весов, перечисленных по именам.

 conv2d/kernel:0
conv2d/bias:0
 

kernel одни хранят массив смещения в качестве своего 2-го элемента массива numpy, который я знал как исходное смещение слоя. Затем, есть bias еще и по отдельности.

Какой из них служит какой цели? В чем разница между ними?

Комментарии:

1. Нет двух предубеждений, ядро не имеет предубеждения, и вы показываете два разных слоя, вот почему есть два предубеждения. Не уверен, в чем проблема…

Ответ №1:

Слой свертки (conv2d) имеет ядро и термин смещения, а плотный слой (плотный) также имеет ядро и термин смещения. Термины смещения здесь для того, чтобы дать новую степень свободы для каждого слоя, что делает нейронную сеть более мощной для прогнозирования.