使用 get_weights() 应用渐变时出错
Error when applying gradients with get_weights()
我想对我的模型应用自定义渐变。
下面,actor_t
是我的模型。 get_weights()
returns np.arrays 的列表并查看 tensorflow 的文档和代码,apply_gradients
需要它是张量列表。
def update_from_gradients(self, actor_gradients):
grads_and_vars = list(zip(actor_gradients, self.actor_t.get_weights()))
train_op = self.actor_opt.apply_gradients(grads_and_vars) # error here
AttributeError: 'numpy.ndarray' object has no attribute '_in_graph_mode'
我也试过这个:
weights = [tf.compat.v2.convert_to_tensor(w) for w in self.actor_t.get_weights()]
grads_and_vars = list(zip(actor_gradients, weights))
train_op = self.actor_opt.apply_gradients(grads_and_vars)
引发了同样的错误:
AttributeError: 'Tensor' object has no attribute '_in_graph_mode'
get_weights
将为您提供模型中权重的当前值,作为 NumPy 数组。您需要的是模型的可训练变量,您可以使用 属性 trainable_weights
或其别名 trainable_variables
.
获得
def update_from_gradients(self, actor_gradients):
grads_and_vars = list(zip(actor_gradients, self.actor_t.trainable_weights))
train_op = self.actor_opt.apply_gradients(grads_and_vars)
我想对我的模型应用自定义渐变。
下面,actor_t
是我的模型。 get_weights()
returns np.arrays 的列表并查看 tensorflow 的文档和代码,apply_gradients
需要它是张量列表。
def update_from_gradients(self, actor_gradients):
grads_and_vars = list(zip(actor_gradients, self.actor_t.get_weights()))
train_op = self.actor_opt.apply_gradients(grads_and_vars) # error here
AttributeError: 'numpy.ndarray' object has no attribute '_in_graph_mode'
我也试过这个:
weights = [tf.compat.v2.convert_to_tensor(w) for w in self.actor_t.get_weights()]
grads_and_vars = list(zip(actor_gradients, weights))
train_op = self.actor_opt.apply_gradients(grads_and_vars)
引发了同样的错误:
AttributeError: 'Tensor' object has no attribute '_in_graph_mode'
get_weights
将为您提供模型中权重的当前值,作为 NumPy 数组。您需要的是模型的可训练变量,您可以使用 属性 trainable_weights
或其别名 trainable_variables
.
def update_from_gradients(self, actor_gradients):
grads_and_vars = list(zip(actor_gradients, self.actor_t.trainable_weights))
train_op = self.actor_opt.apply_gradients(grads_and_vars)