【发布时间】:2020-08-10 21:34:39
【问题描述】:
def select_action(self, state):
probs = F.softmax(self.model(Variable(state, volatile = True))*100) # T=100
action = probs.multinomial()
return action.data[0,0]
self.model(...),其中 self.model 是 Network 类的一个实例。如果 self.model 是实例变量而不是方法,并且我们也没有创建新对象,那么它后面怎么会有括号呢?括号到底是做什么的,括号之间的参数是干什么用的?
【问题讨论】:
-
如果类实现
__call__()方法,类的实例可以是可调用对象,就像函数一样。 -
我们还没有看到
model是在哪里定义的。如果它是def model(self, ...),那么它显然是一个实例方法。如前所述,任何实现__call__方法的东西都可以像函数一样被调用。其实函数就是实现__call__的对象。 -
class Dqn(): def __init__(self, input_size, nb_action, gamma): self.gamma = gamma self.reward_window = [] self.model = Network(input_size, nb_action) self.memory = ReplayMemory(100000) self.optimizer = optim.Adam(self.model.parameters(), lr = 0.001)
标签: python machine-learning neural-network parameter-passing artificial-intelligence