首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >张量流复制整个图

张量流复制整个图
EN

Stack Overflow用户
提问于 2018-01-24 00:55:06
回答 1查看 438关注 0票数 0

我正在尝试创建一个相当通用的遗传算法实现,我是TensorFlow。我有一个缓慢的实现,并试图提高它的速度。我将提供一个非常简单的例子,说明程序进展缓慢的地方,并欢迎关于提高当前实现速度的建议。

让我们说,我们创建了以下内容:

代码语言:javascript
复制
W  = tf.Variable(tf.convert_to_tensor(Warr, dtype=tf.float32))
X  = tf.placeholder(dtype=tf.float32, shape=(3, None))
y  = tf.placeholder(dtype=tf.float32, shape=(None) )

我们想为条件找到W

代码语言:javascript
复制
Warr = np.array([[0.1, 0, 0]])
Xarr = np.random.random((3, 100))
yarr = np.dot(Warr, Xarr)

一个简单的实现(就像我创建的那样)是这样的:

1为此执行工作设立了一个费用函数:

代码语言:javascript
复制
yHat  = tf.matmul(W, X)
costFunction = tf.reduce_mean( tf.sqrt((y - yHat)*(y - yHat)) )

请注意,成本函数可以是任意复杂的,不知道先验。因此,它将被传递到类中。请注意,代码的其余部分都是类中的摘录,但主要思想很容易理解:

2生成一个种群(在一个类中)。

代码语言:javascript
复制
self.population   = []
for i in tqdm(range(self.GAconfig['numChildren'])):
    temp = []
    for j, v in enumerate(locVars):
        v = (v + (np.random.random( v.shape ) - 0.5) * 2)
        v = tf.Variable(tf.convert_to_tensor(v, dtype=tf.float32))
        temp.append(v)
    self.population.append( temp )

为这些人口寻找成本函数是一项相当艰巨的任务。首先将人口中的权重复制到原始权重张量中,然后计算原始成本函数:

代码语言:javascript
复制
for ps in self.population:
    for i, v in enumerate(self.variables): 
        sess.run(tf.assign( self.variables[i], ps[i] ))

    result = sess.run(self.costFunction, feed_dict={
                            self.X : X, self.y : y
                            }) 

这种实现显然是缓慢的。一种可能的方法是生成一组成本函数张量,而不是权值变量,所有这些变量都可以一次更新。

然而,在这一点上,我不知道如何“良好执行”才能提高目前执行工作的速度。蚂蚁的帮助将受到极大的感谢.

注意事项:在这里可以获得完整的实现:

https://github.com/sankhaMukherjee/tfNNGA

  • 它处于非常早期的阶段,因此目前的代码非常糟糕。
  • GA函数的实现可以在文件src/lib/GA/GA.py中找到。
  • 交叉在GA类中找到。
  • 这是从文件src/moduleGA/moduleGA.py中调用的。
EN

回答 1

Stack Overflow用户

发布于 2018-07-18 11:56:25

你试过下一个功能了吗?

代码语言:javascript
复制
copy_variable_to_graph
copy_op_to_graph
get_copied_op

来源

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

https://stackoverflow.com/questions/48413249

复制
相关文章

相似问题

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