tensorflow google实战 学习笔记——TensorFlow入门(1)

本文介绍TensorFlow的基础概念,包括计算图的定义与执行过程。详细解释如何使用TensorFlow进行简单的数学运算,并演示如何通过会话管理计算过程。此外,还介绍了变量的定义与初始化方法。

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

阅读 google实战 入门tensorflow 1:

tensorflow入门

TensorFlow 是一个通过计算图的形式来表述计算的编程系统。

计算图的第一阶段定义计算,第二阶段执行计算
定义计算:

import tensorflow as tf
a = tf.constant([1.0,2.0],name='a')
b = tf.constant([2.0,3.0],name='b')
result = a+b

此时如果执行print(result),得到结果为:
Tensor(“add_1:0”, shape=(2,), dtype=float32)
计算结果不是一个具体数字,而是一个张量结构,包含张量的名字。维度和属性。张量的名字形式为:node:src_output ,node为节点的名称,src_output表示当前张量来自节点的第几个输出。
TensorFlow支持14种数据类型:实数(tf.float32、tf.float64)整数(tf.int8、tf.int16、tf.int32、tf.int64、tf.uint8)布尔型(tf.bool)复数(tf.complex64、tf.complex128)

执行计算:会话

 sess = tf.Session()
 print( sess.run(result))
 sess.close()

结果为:[ 3. 5.]
sess = tf.Session() 创建会话
sess.run(result) 得到关心的运算的结果
sess.close() 关闭会话 释放资源

使用以下方法创建会话不需要关闭会话:

with tf.Session() as sess:
sess.run(result)

通过设定默认会话计算张量的取值:

sess = tf.Session()
with sess.as_default():
    print(result.eval())

对于计算图:
tf.get_default_graph()可以获得默认计算图
result.graph可以得到result的计算图
tf.Graph用来生成新的计算图
各计算图之间张量和运算都不会共享。

import tensorflow as tf

g1 = tf.Graph()
with g1.as_default():
    v = tf.get_variable('v', shape=[1],initializer=tf.zeros_initializer())

g2 = tf.Graph()
with g2.as_default():
    v = tf.get_variable('v',shape=[1], initializer=tf.ones_initializer())

with tf.Session(graph=g1) as sess:
    tf.initialize_all_variables().run()
    with tf.variable_scope("",reuse=True):
        print(sess.run(tf.get_variable('v')))

with tf.Session(graph=g2) as sess:
    tf.initialize_all_variables().run()
    with tf.variable_scope("",reuse=True):
        print(sess.run(tf.get_variable('v')))

运行结果为:
[ 0.]
[ 1.]
tf.get_variable(name, shape, initializer): name就是变量的名称,shape是变量的维度,initializer是变量初始化的方式,初始化的方式有以下几种:
tf.constant_initializer:常量初始化函数
tf.random_normal_initializer:正态分布
tf.truncated_normal_initializer:截取的正态分布
tf.random_uniform_initializer:均匀分布
tf.zeros_initializer:全部是0
tf.ones_initializer:全是1
tf.uniform_unit_scaling_initializer:满足均匀分布,但不影响输出数量级的随机值

不同的变量之间不能有相同的名字,这里定义了variable_scope,这样才可以有相同的名字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值