Я хочу самостоятельно рассчитать и адаптировать градиент в tensorflow

#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 и применить градиент.