我怎样才能使这种培训更快?当我在 100 x 100 矩阵上调用 fit 方法时,速度非常慢
我的模型是顺序的
h = self.model.fit(
inputs,
targets,
epochs=epochs,
batch_size=16,
verbose=1,
)
这是我的矩阵
def build(n):
mat=np.ones(N*N)
return mat.reshape((N,N))
这是我的 Qtraining
qt = Qtraining(model,
env,
n_epoch=200,
max_memory=500,
data_size=100,
name='model100')
这是体验方法
def get_data(self, data_size=10):
env_size = self.memory[0][0].shape[1] # env_state 1d size (1st element of episode)
mem_size = len(self.memory)
data_size = min(mem_size, data_size)
inputs = np.zeros((data_size, env_size)) # metti Nsize righe di 0 , e envSize elementi 0
targets = np.zeros((data_size, self.num_actions))#
for i, j in enumerate(np.random.choice(range(mem_size), data_size, replace=False)):
env_state, action, reward, next_env_state, game_over = self.memory[j]
inputs[i] = env_state
# There should be no target values for actions not taken.
# Thou shalt not correct actions not taken #deep (quote by Eder Santana)
targets[i] = self.predict(env_state)
# Q_sa = derived policy = max quality env/action = max_a' Q(s', a')
Q_sa = np.max(self.predict(next_env_state))
if game_over:
targets[i, action] = reward
else:
# reward + gamma * max_a' Q(s', a')
targets[i, action] = reward + self.discount * Q_sa
return inputs, targets
使用 50 x 50 矩阵,我得到 2500 个单元,在构建神经网络时,我有一个 2500x2500 参数 + 2500,总共 6252500。我认为这会减慢操作速度。并且只有 3 个 Danse 层,最后一个是 size 4,因为可能的动作是 4。是否可以通过添加更多的 Danse 层来减少操作时间?
这是我的模型
def build_model(env, **opt):
loss = opt.get('loss', 'mse')
a = opt.get('alpha', 0.24)
model = Sequential()
esize = env.maze.size
model.add(Dense(esize, input_shape=(esize,)))
model.add(LeakyReLU(alpha=a))
model.add(Dense(esize))
model.add(LeakyReLU(alpha=a))
model.add(Dense(num_actions))
model.compile(optimizer='adam', loss='mse')
return model