加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 为什么我需要在TensorFlow中初始化变量?

发布时间:2020-12-16 22:28:56 所属栏目:Python 来源:网络整理
导读:我主要在R中开发我的模型,目前我正在学习TensorFlow. 我正在阅读以下代码的教程 raw_data = [1.,2.,8.,-1.,0.,5.5,6.,13] spike = tf.Variable(False)spike.initializer.run()for i in range(1,len(raw_data)): if raw_data[i] - raw_data[i-1] 5: updater =

我主要在R中开发我的模型,目前我正在学习TensorFlow.
我正在阅读以下代码的教程

raw_data = [1.,2.,8.,-1.,0.,5.5,6.,13] 
spike = tf.Variable(False)
spike.initializer.run()

for i in range(1,len(raw_data)): 
    if raw_data[i] - raw_data[i-1] > 5:
        updater = tf.assign(spike,True)
        updater.eval()
    else:
        tf.assign(spike,False).eval()
    print("Spike",spike.eval())
sess.close()

从外行人的角度来看,为什么我需要在TensorFlow中初始化和Variabalize?我知道这可能是一个基本问题,但这是R没有解决的问题.

最佳答案
让我们看看脚本实际上做了什么:

spike = tf.Variable(False)

此行在计算图中创建符号变量或节点,并使用常量初始值设定项.此时,没有为此变量分配任何内容.最重要的是,它甚至还不知道它将放置在哪个设备(CPU或GPU)上.

下一个,

spike.initializer.run()

此行在默认会话中运行spike初始化程序,您已经开始了.

请注意,首先,尽管代码完全有效,但在实际应用中并不常见.更常见的是,职责分离:模型在一个或多个源文件中定义,并在另一个或多个文件中执行.初始化在逻辑上属于后者,因为只有在会话启动时才会分配内存.

其次,const不是初始化变量的唯一选项.例如,Xavier initializer需要具有整个图形结构来计算输入和输出连接的数量,并推导出它们的标准偏差.如果我们在定义期间尝试初始化变量,它将无法工作.

我希望现在的tensorflow设计变得更加清晰:初始化器是一个专用的操作系统.特别是对于您的用例,tensorflow已经发布了eager mode,这是一个命令式的,逐个运行的界面,其中操作在从Python调用时立即执行.

你可以像这样开始:

import tensorflow.contrib.eager as tfe
tfe.enable_eager_execution()

……就像上面一样,它会让你从样板中解脱出来.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读