Керас: Как получить вес, сделать весы одномерным массивом, а затем сделать форму весов первоначальной? - PullRequest
0 голосов
/ 17 февраля 2020

Я хочу провести эксперимент. и мне нужно получить вес модели Keras, сделать его одномерным массивом и сделать форму, похожую на начальную

import tensorflow as tf

from tensorflow import keras
from tensorflow.keras import layers
import numpy as np

model = tf.keras.Sequential()
# Adds a densely-connected layer with 64 units to the model:
model.add(layers.Dense( 4, input_dim = 5 ,activation='relu'))
# Add another:
model.add(layers.Dense(3, activation='relu'))
# Add an output layer with 10 output units:
model.add(layers.Dense(2))
# Configure a model for mean-squared error regression.
model.compile(optimizer=tf.keras.optimizers.Adam(0.01),
              loss='mse',       # mean squared error
              metrics=['mae'])  # mean absolute error

weights = (model.get_weights())

#make weight  become 1D array

#maka 1D array become like inital shape

model.set_weights(weights)

. Почему я хочу это сделать? потому что я хочу сделать некоторую мутацию, используя другой модуль, необходимо передать 1D массив

как это сделать?

как мы знаем, форма весов модели Keras выглядит следующим образом

[array([[-0.24053234,  0.4722855 ,  0.29863954,  0.22805429],
       [ 0.45101106, -0.00229341, -0.6142864 , -0.2751704 ],
       [ 0.159172  ,  0.43983865,  0.61577237,  0.24255097],
       [ 0.24160242,  0.422235  ,  0.8066592 , -0.2711717 ],
       [-0.30763668, -0.4841219 ,  0.767977  ,  0.23558974]],
      dtype=float32), array([0., 0., 0., 0.], dtype=float32), array([[ 0.24129152, -0.4890638 ,  0.18787515],
       [ 0.8663894 , -0.09163451, -0.86416066],
       [-0.01754427,  0.32654428, -0.78837514],
       [ 0.589849  ,  0.5886531 ,  0.27824092]], dtype=float32), array([0., 0., 0.], dtype=float32), array([[ 0.8456359 , -0.26292562],
       [-1.0447757 , -0.43539298],
       [ 1.0835328 , -0.43536085]], dtype=float32), array([0., 0.], dtype=float32)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...