Tensorflow Cookbook2-Varible & Placeholder 的使用

本文通过实例讲解了TensorFlow中变量和常量的基本使用方法,包括变量的定义、初始化及更新过程,并引入了占位符的概念,演示了如何使用占位符灵活地输入数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在最近的学习过程中,在了解了常数和变量中的简单不同,我尝试了几个小的语句,这样可以帮助我们仔细分析一下这两者的用法区别:

vari = tf.Variable(2,name='vari')            ####1

cons = tf.constant(3)                        ####2

Mul = tf.multiply(vari,cons)                 ####3

Answer = tf.assign(vari,Mul)                 ####4

init = tf.global_variables_initializer()     ####5

with tf.Session() as sess:
    sess.run(init)
    for i in range(5):
        sess.run(Answer)
        print(sess.run(Answer))

在上面的语句中,#1首先定义了变量vari,我们定义的初始值为2,笔者尝试了一下,tf.Varible是不可以赋空值的,并定义了一个名称(可以不同)。

#2中定义了常量cons,为3,这个我们在上一讲中阐述过。#3定义了新的计算 Mul = vari*cons ,由于需要持续的变化以查看输出,我们不妨把Mul的值送入vari,让这个函数可以持续的迭代下去。

在#4中,会将assign中后面的内容赋值给前面的量。完成值的传递。由于变量定义后,流动起来需要进行一步初始化的声明,故采用#5语句进行初始化,老版本的语句tf.initialize_all_variables将会在未来进行移除,目前采用global的形式更加好一些。

在session会话中,与第一篇文章有所不同的是,需要对init初始化语句进行run,才可以使得整个模型流动起来,运算后的结果为:

18
162
1458
13122
118098

然而在正常的数据分析过程中,有些变量我们不方便一上来就定义参数,而且在调整参数修改代码的时候,我们更希望能够在统一的位置进行修改,所以placeholder应运而生,它可以帮助我们有效的解决上述两个难题。代码如下所示:

import tensorflow as tf

var_1 = tf.placeholder(tf.float32,[2,2])            

var_2 = tf.placeholder(tf.float32,[2,2])         

Mul_1 = tf.multiply(var_1,var_2)

Mul_2 = tf.matmul(var_1,var_2)

with tf.Session() as sess:
   print(sess.run(Mul_1,feed_dict={var_1:[[2,3],[1,4]],var_2:[[-1,2],[2,3]]}))
   print(sess.run(Mul_2,feed_dict={var_1:[[2,3],[1,4]],var_2:[[-1,2],[2,3]]}))

首先我们定义两个2*2的矩阵分别命名为var_1,var_2,这两个矩阵分别执行按位相乘以及矩阵之间的相乘操作。

在Session中,对于每一个待输出的变量,我们都会在feed_dict中赋上一定的值,这类似于Python中的字典操作,方便了我们队变量的赋值应用。输出结果如下:

[[ -2.   6.]
 [  2.  12.]]
[[  4.  13.]
 [  7.  14.]]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值