TensorFlow入门介绍

  幕布链接

1.概述

  TensorFlow是一种图计算框架,所有的计算操作被声明图(graph)中的节点(Node)。声明变量或者常量的过程并不执行实际的操作,而是向图中增加节点

a=tf.constant(1,name='one')#增加节点的操作,声明一个变量,同时指定该变量名字  
b=tf.constant(2,name='two')#Graph中所有的数据均以tensor来存储和表达   
print(a)#Tensor("Const:0", shape=(), dtype=int32)节点信息
c=tf.add(a,b)#或者c=a+b
print(c)#Tensor("add:0", shape=(), dtype=int32)
mat_a=tf.constant([[1,1,1],[2,2,2]])
mat_b=tf.constant([[3,3,3],[4,4,4]])
mul_a_b=mat_a*mat_b#相当于tf.multiply==点乘==操作
tf_matmul_a_b=tf.matmul(mat_a,tf.transpose(mat_b),name='matmul_with_name')
##显示图结构操作:【三步曲】
this_graph=tf.get_default_graph()
this_graph_def=this_graph.as_graph_def()
print(this_graph_def)#显示出每个节点的:节点名称【节点名称可以在声明中指定】、节点操作、属性
##显示结果:也就是进程,执行程序的过程:【三步曲】
sess=tf.Session()
mul_value,tf_mul_value=sess.run([mul_a_b,tf_matmul_a_b])
print(mul_value,tf_mul_value)

注意1:一个进程就是程序一次运行,而Session就是一个
注意2:不知道自己的output,不关心自己的输出去了哪,逐层递推到constant或者placeholder找到input
计算单元:Tensor、Constant、Variable、placeholder 

#【placeholder的应用】:placeholder是一个占位符,通常代表着从外界的输入值,None表示尚不确定的维度

x=tf.placeholder(dtype=tf.float,shape=[None,2])#指定类型和维度
y=tf.placeholder(dtype=tf.float32,shape=[None,2])


#【Variable的应用】:声明一个变量,变量的含义是在后面优化过程中需要更新的权重偏置等参数,==它的维度是需要指定确定==,需要更新的都需要声明为variable

w=tf.Variable(tf.zeros([2,1]))
b=tf.Variable(tf.zeros([2,1]))

#【前向计算】
logits = tf.matmul(x, w) + b
output = tf.nn.sigmoid(logits)
cross_entropy = tf.losses.sigmoid_cross_entropy(multi_class_labels=y, logits=logits)

#【反向计算】
"这里我们创建了一个GradientDescentOptimizer类,并调用了minimize方法作为一个训练的step。
minimize中包含两个操作compute_gradients和apply_gradients。
注意我们并不在这里循环"
train_step = tf.train.GradientDescentOptimizer(0.3).minimize(cross_entropy)
#train_step是一个op,并不会产生一个tensor(数值)

#【定义输入值】
x_value = np.array(
    [[1,1],
     [1,0],
     [0,1],
     [0,0]])
y_value = np.array(
    [[1],
     [1],
     [1],
     [0]])

#【变量的整个操作:声明-->初始化节点-->加载】
init_op = tf.global_variables_initializer()#添加用于初始化的节点
sess = tf.Session()#加载,真正初始化相关的Variables
sess.run(init_op)

"#在session.run里进行迭代循环【更新节点】,而不是在graph里迭代循环【增加节点】,run里包含要执行的变量"
for current_step in range(100):
    cross_entropy_value, output_value, _ = sess.run(
        [cross_entropy, output, train_step], 
        feed_dict={x:x_value, 
                   y:y_value} )
cross_entropy_value, logits_value, output_value, w_value, b_value = sess.run(
    [cross_entropy, logits, output, w, b], 
    feed_dict={x:x_value, 
               y:y_value} )
print(cross_entropy_value)
print(logits_value)
print(output_value)
print(w_value)
print(b_value)

2. 总结

  • Op/Node/ProtoBuf
  • Graph/Session
  • Tensor/Constant/Variable/placeholder
  • Control Flow
  • 所有tf.的操作均不是实际计算动作,而是生成节点Node
  • Node属性包括name/op/input/Device/Attr
  • Graph通过ProtoBuf持久化,Graph的一次运行表现为Session
    • ProtuBuf:Google protocol buffers,是用于协议编码的工具库,是一种二进制的数据格式
  • Tensor属性[1]
    • device:表示tensor将被产生的设备名称
      dtype:tensor元素类型
      graph:这个tensor被哪个图所有
      name:这个tensor的名称
      op:产生这个tensor作为输出的操作(Operation)
      shape:tensor的形状(返回的是tf.TensorShape这个表示tensor形状的类)
      value_index:表示这个tensor在其操作结果中的索引 

参考文献:


  1. https://blog.csdn.net/xierhacker/article/details/53103979 

TensorFlow是一个由Google开发的开源机器学习库,它被设计用于构建和部署各种类型的机器学习模型,包括深度学习网络。以下是TensorFlow入门的一些基本步骤: 1. **安装TensorFlow**:首先,你需要下载并安装TensorFlow。如果你是Python开发者,可以通过pip install tensorflow命令来安装最新版本。 2. **环境配置**:推荐使用Anaconda或Jupyter Notebook创建一个独立的虚拟环境,这有助于管理不同项目的依赖。 3. **基础概念**: - **张量(Tensors)**:是TensorFlow的基本数据结构,类似于NumPy中的数组,但支持GPU加速计算。 - **图(Graphs)**:TensorFlow的核心思想是基于图的数据流模型,每个节点代表一个操作,边则表示输入和输出。 4. **创建第一个会话(Session)**:Session是运行图形的地方,你需要用它来执行计算。 5. **代码示例**: - 使用`tf.placeholder`定义占位符,它是动态大小的输入变量。 - 创建常量(`tf.constant`),常数节点不参与图的计算过程。 - 定义运算(`tf.add`, `tf.matmul`等)并将其添加到图中。 - 使用`session.run`执行计算,并获取结果。 6. **实战练习**:尝试解决一些简单的问题,比如线性回归、卷积神经网络的基础应用等,通过实际项目来熟悉API和流程。 7. **官方文档**:查阅TensorFlow官方文档(https://tensorflow.org/)是很关键的,它提供了详细的教程、API参考和案例研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值