访客25875

文章72

字数278298

粉丝16

1、首先,在tf中Variable()是一个类,而placeholder()和constant()是2个函数! 

2、其次,初始化阶段和初始化方法不同,

    Variable必须在run()整个图之前就初始化好,用assign()或initilizer()方法,在运行过程中自动求导和反向传播可以不断调整它的值,比如w/b参数;     

    placeholder在运行图开始/以及运行过程中不断初始化,用feed_dict={}方法,基本功能是用来喂已经收集好的数据;

    constant()只是个常量构造函数,它可以用在assign/initilizer中为Variable生成数据,也可以用在feed_dict{}中为placeholder生成数据。

3、Variable和placeholder的区别?

   二者都用于为计算图规定或声明数据,比如数据的大小,类型等等,以完成图的构建。

   但为什么又要分为Variable和placeholder呢?

   因为在整个图所描述的张量流中,输入张量的形态是最自由的,所以没法用一个统一的类来描述它,你可以为整个图喂入任何数据,语音、文本、图像、视频……。

   但是图内中间各层的变量V,必须要遵循一致的约定和规范,以此实现前向和反向传播中的各种自动化运算,比如自动求导。

   一致的约定和规范就是类,这就是为什么tf中的Variable和placeholder看起来功能相似,但一个是Class,而另一个只是个function!   

3、constant非常底层,只是用来为变量V或占位符p生成数据的。 

   变量V和占位符只是对图中所需数据的规定和声明,在初始化之前,它们其实是空的,没有数据;

   填充数据就需要用到constant/random/ones等等,这些更底层的组件。




 收藏 (0)  打赏  点赞 (1)

您可能需要以下文章!

powerd by studyai.com 2017