Я хочу использовать градиенты и веса из модели Keras для вычисления новых весов по градиентному спуску.Но что-то не так с новыми весами, модель Keras не может использовать новые веса.Когда я запускаю вторую функцию «test», «model.set_weights (weights)» получает сообщение об ошибке: установка элемента массива с последовательностью.
def test(weights=None):
batch_size = 64
epochs = 1
# convert class vectors to binary class matrices
y_train = keras.utils.to_categorical(y_train, 10)
y_test = keras.utils.to_categorical(y_test, 10)
model = Sequential()
model.add(Dense(200, activation='relu', input_shape=(784,)))
model.add(Dense(10, activation='softmax'))
if weights is not None:
model.set_weights(weights)
model.compile(loss='categorical_crossentropy',
optimizer=SGD(lr=0.01),
metrics=['accuracy'])
history = model.fit(x_train, y_train,
batch_size=batch_size,
epochs=epochs,
verbose=0,
validation_data=(x_test, y_test))
outputTensor = model.output
listOfVariableTensors = model.trainable_weights
gradients = k.gradients(outputTensor, listOfVariableTensors)
gradients = np.array(gradients)
weights = np.array(model.get_weights())
return weights, gradients
weights, gradients = test()
weights = weights - 0.01 * gradients
test(weights)