为了账号安全,请及时绑定邮箱和手机立即绑定

通过哈雷方法使用张量流求四次多项式的根

通过哈雷方法使用张量流求四次多项式的根

小唯快跑啊 2021-05-30 12:30:19
我刚刚开始学习 tensorflow,基本上我正在学习使用 tensorflow 进行各种数值计算,而不是直接在 ML 中使用它。我正在 Google Cloud Platform 上执行此操作,在那里我遇到了这个问题并被卡住了。我正在使用惰性求值,我可以使用占位符在张量流图中创建 a0、a1、a2...、a4 的实例,也可以写出函数。但是如何使用 tensorflow 进行初始猜测?而且,即使我得到 x0 的值,我如何使用tf.while_loop应用循环, 我浏览了它的文档和这篇文章,但我仍然不知道如何进行。我试图找到具有类似问题或内容的帖子,但找不到使用 tensorflow 的帖子。如果我能获得洞察力或使用内在 tensorflow 函数和命令的方法,那就太好了 :) 提前致谢!
查看完整描述

2 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

当我从这里执行第一个示例时,我得到了这些值。请注意,方程式是不同的。


1.4999999969612645


1.411188880378198


1.4142132016669995


1.4142135623730898


但这似乎是一个很好的例子。


import tensorflow as tf


h = tf.constant(.00000001, dtype='float64')

eps = tf.constant(.000001, dtype='float64')

b = tf.constant(2.0, tf.float64)


def f(x):

    return tf.subtract( tf.multiply(x , x ) , 2. )


def fp(x):

    return  tf.divide( tf.subtract( f(tf.add(x, h)) ,

                                    f(x)

                                  ) ,

                       h

                     )


def fpp(x):

    return tf.divide( tf.subtract( fp( tf.add(x , h)) ,

                                   fp(x)

                                 ),

                       h

                     )


def cond(i, x_new, x_prev):

    return tf.logical_and( i < 5,

            tf.less_equal( tf.abs( tf.cast(tf.subtract( x_new ,

                                                       x_prev

                                                     ),dtype='float64')),

                          eps

                        )

                        )


def body( i, x_new, x_prev ):

    fx = f( x_prev )

    fpx = fp( x_prev )

    x_new = tf.subtract( x_prev ,

                         tf.divide( b * fx * fpx  ,

                                    tf.subtract(b * fpx * fpx,

                                                fx * fpp( x_prev )

                                               )

                                  )

                       )


    xnew = tf.Print(x_new, [x_new], message="The root is : ")


    with tf.control_dependencies([x_new,xnew]):

        x_prev = tf.identity(xnew)


    return [i + 1, xnew, x_prev ]


sess = tf.Session()

sess.run(tf.global_variables_initializer())



print( sess.run(tf.while_loop(cond, body, [1, b - fpp(b), b])) )

根是:[1.4999999969612645]


根是:[1.411188880378198]


根是:[1.4142132016669995]


根是:[1.4142135623730898]


[5,1.4142135623730898,1.4142135623730898]


查看完整回答
反对 回复 2021-06-01
  • 2 回答
  • 0 关注
  • 153 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号