#python #tensorflow
Вопрос:
Я хочу самостоятельно рассчитать и адаптировать градиент в tensorflow. Я хочу самостоятельно рассчитать градиент для одного из нескольких выходов и адаптировать 0 для остальных выходов.
Я протестировал построение модели с помощью следующей простой программы и попытался адаптировать ее, установив один градиент на постоянное значение, а другой-на 0, но я не получаю желаемого результата.
Что я должен дать apply_gradients?
Я мало что знаю о tensorflow, поэтому был бы признателен, если бы вы любезно рассказали мне об этом
def cmodel(): in_ = Input(shape=(1,)) x=in_ x=Dense(16)(x) x=Activation('relu')(x) x=Dense(2)(x) x=Activation('linear')(x) model = Model(inputs=in_, outputs=[x]) return model model=cmodel() model.compile(optimizer=Nadam(learning_rate=0.005)) mylist2=[] for i in range(100): g=tf.constant([-0.3,0]) model.optimizer.apply_gradients(zip(g, model.trainable_variables)) print('num:',model.predict(np.array([1]))) mylist2.append(model.predict(np.array([1]))[0])
Ответ №1:
Я не уверен, что понимаю, что ты хочешь сделать. Фактически, вы применяете значения -3 к обучаемой переменной первого слоя, т. е. к ядру первого плотного слоя, и 0 к смещению. Например, если вы хотите изменить только первый слой, вы можете определить g=tf.constant([-0.3, 3., 0., 0.])
. Вы также можете получить обучающие переменные первого слоя: model.layers[1].trainable_variables
и применить градиент.