Как я могу получить вес и уклон от моей модели? - PullRequest
0 голосов
/ 02 июля 2019

У меня есть простая нейронная сеть, мне нужно получить веса и уклоны от модели.Я пробовал несколько подходов, которые обсуждались ранее, но я все равно получаю ошибку выхода за границы.Не уверен, как это исправить, или что мне не хватает.

Сеть-

model = keras.Sequential([
    keras.layers.Flatten(input_shape=(28, 28)),
    keras.layers.Dense(128, activation=tf.nn.relu),
    keras.layers.Dense(10, activation=tf.nn.softmax)
])

model.layers[0].get_weights()[1]

Ошибка - IndexError: list index out of range

Это то, что упоминалось в нескольких вопросах, но яв конечном итоге получить за пределы ошибки за это.

У меня есть еще один вопрос, индекс следует за model.layers[], соответствует ли он слою?Например, model.layers[1] дает веса, соответствующие второму слою, что-то вроде этого?

Ответы [ 2 ]

1 голос
/ 02 июля 2019

Первый слой (индекс 0) в вашей модели - это слой Flatten, у которого нет весов, поэтому вы получаете ошибки.

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

model.layers[1].get_weights()[1]
0 голосов
/ 02 июля 2019

Я был там, я смотрел свой старый код, чтобы посмотреть, смогу ли я вспомнить, как я решил эту проблему.Что я сделал, так это распечатал длину model.layer[index].get_weights()[X], чтобы выяснить, где керасы сохраняют нужные мне веса.В моем старом коде model.layers[0].get_weights()[1] вернул бы смещения, а model.layers[0].get_weights()[0] вернул бы действительные веса.В любом случае, примите во внимание, что есть слои, вес которых не сохраняется (так как у них нет весов), поэтому, если запрос model.layers[0].get_weights()[0] не работает, попробуйте с model.layers[1].get_weights()[1], так как я неЯ уверен, что выровнять слои, но я знаю, что плотные слои должны сохранять свой вес.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...