Почему нельзя комбинировать веса и градиенты из модели керас - PullRequest
0 голосов
/ 10 июля 2019

Я хочу использовать градиенты и веса из модели 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...