#python #tensorflow #keras #conv-neural-network #tf.keras
Вопрос:
После редактирования: Оказывается, я запутался, постоянно играя с тремя функциями ниже.
model.weights
model.get_weights()
model.layer(i).get_weights()
model.layer(i).get_weights()
возвращает два отдельных массива (без каких-либо тегов) , которые являютсяkernel
иbias
если в модели существует смещение.model.get_weights()
напрямую возвращает все веса без каких-либо тегов.model.weights
возвращает веса и немного информации, например,name
о слое, к которому он принадлежит, и егоshape
. Я использовал это для эксперимента в вопросе.
Что меня смутило, так это просто 1 и 3 выше.
Примечание: Я решил не удалять вопрос, потому что он получил ответ, и с последующим редактированием он все еще может кому-то помочь.
Вопрос был в следующем…
После сохранения модели Keras, когда я проверяю веса, я замечаю 2 отдельных смещения.
Ниже приведена часть весов, перечисленных по именам.
conv2d/kernel:0
conv2d/bias:0
kernel
одни хранят массив смещения в качестве своего 2-го элемента массива numpy, который я знал как исходное смещение слоя. Затем, есть bias
еще и по отдельности.
Какой из них служит какой цели? В чем разница между ними?
Комментарии:
1. Нет двух предубеждений, ядро не имеет предубеждения, и вы показываете два разных слоя, вот почему есть два предубеждения. Не уверен, в чем проблема…
Ответ №1:
Слой свертки (conv2d) имеет ядро и термин смещения, а плотный слой (плотный) также имеет ядро и термин смещения. Термины смещения здесь для того, чтобы дать новую степень свободы для каждого слоя, что делает нейронную сеть более мощной для прогнозирования.