首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Keras/Tensorflow中计算复杂性和内存问题

在Keras/Tensorflow中计算复杂性和内存问题
EN

Stack Overflow用户
提问于 2018-12-30 22:17:19
回答 1查看 255关注 0票数 0

我想在每个训练阶段之后用困惑来评估我的模型。我正在使用带有Tensorflow后端的Keras。问题是,在每次评估之后,越来越多的内存被使用,但从未被释放。所以在几个时期之后,我的系统崩溃了。如果我不使用keras和tensorflow函数,它可以在没有内存问题的情况下工作。但那就太慢了。代码如下:

代码语言:javascript
复制
def compute_perplexity(self, modelName, sentences):
    all_labels, all_predictions = self.predictLabels_for_perplexity_evaluation(self.models[modelName], sentences)
    # add an axis to fit tensor shape
    for i in range(len(all_labels)):
        all_labels[i] = all_labels[i][:,:, np.newaxis]

#calculate perplexity for each sentence length and each datapoint and append to list
perplexity = []
for i in range(10,15): #range(len(all_labels)):
    start = time.time()
    xentropy = K.sparse_categorical_crossentropy(tf.convert_to_tensor(all_labels[i]), tf.convert_to_tensor(all_predictions[i]))
    perplexity.append(K.eval(K.pow(2.0, xentropy)))
    print('time for one set of sentences. ', time.time()- start)
#average for each datapoint
for i in range(len(perplexity)):
    perplexity[i] = np.average(perplexity[i], axis=1)
    perplexity[i] = np.average(perplexity[i])

return np.mean(perplexity)
EN

回答 1

Stack Overflow用户

发布于 2018-12-30 22:41:44

不需要使用TensorFlow评估这个指标,您的代码所做的是在每次调用时将all_labels数组添加到图中,这解释了您看到的内存使用情况。

考虑使用tf.convert_to_tensor实现所有这些计算,或者使用feed_dict (不使用numpy )在会话中使用新数据进行计算的操作。

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

https://stackoverflow.com/questions/53978354

复制
相关文章

相似问题

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