首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >the的大小如何影响Tensorflow模型的训练速度?

the的大小如何影响Tensorflow模型的训练速度?
EN

Stack Overflow用户
提问于 2019-01-14 03:46:16
回答 1查看 144关注 0票数 0

我已经多次使用tensorflow模型运行了完全相同的python脚本。只有一个区别。一半的脚本使用大小为500000的双队列,另一半使用大小为1000000的双队列作为经验存储。从存储中选择一批512个随机挑选的样本进行训练。

这些网络仍在训练中,但到目前为止,那些具有500k的网络的速度大约快了10%。看起来距离越来越远了。当然,从更大的内存中随机选择512可能需要更长的时间。但是在整个培训过程中有10%的增长呢?

代码如下所示

代码语言:javascript
复制
...
self.memory = deque(maxlen=1000000)
...
def experience_replay(self):
        if len(self.memory) < 512:
            return
        batch = random.sample(self.memory, 512)
        state_batch = np.zeros((512, 6, 7, 2))
        q_values_batch = np.zeros((512, 7))
        idx = 0
        for state, action, reward, state_next, terminal in batch:
            q_update = reward
            if not terminal:
                state_next = np.expand_dims(state_next, axis=0)
                q_update = (reward + 0.95 * np.amax(self.model.predict(state_next)[0]))
            state = np.expand_dims(state, axis=0)
            q_values = self.model.predict(state)
            q_values[0][action] = q_update
            state_batch[idx, ...] = state
            q_values_batch[idx, ...] = q_values
            idx = idx + 1

        self.model.fit(state_batch, q_values_batch, verbose=0)
        self.exploration_rate *= 0.9998
        self.exploration_rate = max(0.01, self.exploration_rate)

造成这种加速的原因是什么?

EN

回答 1

Stack Overflow用户

发布于 2019-10-07 12:31:42

deque()和random.sample()不能有效地协同工作。对于端点附近的访问,双队列速度很快,但对于中间的索引查找,则为O(n)。这是有问题的,因为random.sample()对双队列进行重复的索引查找。问题中显示的代码片段最好有一个列表。

您原始问题的准确答案是从n长度的双端队列中提取k个样本所需的时间与k * n / 4成正比。在算法上,将大小加倍通常会使运行时间的期望值加倍。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54172577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档