Tensorflow入门实践

一、tensorflow的处理结构:

1.形象理解:(来自莫烦)

       Tensorsflow是采用data flow graphs(数据流图)来计算,首先我们得创建一个数据流图,然后将我们的数据以张量(tensor)的形式放到图中计算,''tensor''  ''flow'' 就是这么来的。可以看到上图就是一个完整的神经网络的图,图中节点代表数学操作,线代表数据tensor的流动,训练模型时tensor会不断的从数据流图中的一个节点flow到另一节点。

        所以上图就是,在tensorflow的第一步就是建立一个这样的结构,然后把数据放到这样的一个结构中,让自己去运行,(tensor)向量在里面飞(flow),Input先飞到隐藏层(Relu)再飞到输出层(logit),梯度下降做数据处理,SGD train做数据完善。然后循环进行下一次tensorflow。

2.具体理解:

       一个模型可以分为输入、中间节点、输出三大部分,tensorflow框架做的是让这三个部分连通起来学习规则并可以计算。tensorflow将节点和节点间的运算关系定义在‘图’上(图是静态的,只是负责把结构搭起来),然后通过一个sesssion‘会话’进行具体的运算。(会话是动态的,只有启动对话才会将数据流向图中,并按图中关系运算得出结果)

二、Tensorflow开发基本步骤:

1.声明张量:

(1)通过占位符定义(一般使用这个)

import tensorflow as tf

"""placeholder 是 Tensorflow 中的占位符,暂时储存变量.
Tensorflow 如果想要从外部传入data, 那就需要用到 tf.placeholder(), 
然后以这种形式传输数据 sess.run(***, feed_dict={input: **})."""

#在 Tensorflow 中需要定义 placeholder 的 type ,一般为 float32 形式
input1= tf.placeholder(tf.float32)
input2= tf.placeholder(tf.float32)
# mul = multiply 是将input1和input2 做乘法运算,并输出为 output
ouput = tf.multiply(input1, input2)

"""接下来, 传值的工作交给了 sess.run() , 需要传入的值放在了feed_dict={} 
并一一对应每一个 input. placeholder 与 feed_dict={} 是绑定在一起出现的"""

with tf.Session() as sess:
    print(sess.run(ouput, feed_dict={input1: [7.], input2: [2.]}))

#结果:14

使用方法:
占位符只是将数据放入图中,从会话中的feed_dict参数获取数据。 要在图中放置占位符,我们必须对占位符执行至少         一个操作。

比如下面:我们初始化图形,将x声明为占位符,并将y定义为x上的identity操作,它只返回x。 然后,我们创建数据以进入x占位符并运行identity操作。 值得注意的是,TensorFlow不会在feed字典中返回一个自引用的占位符。

sess = tf.Session()
x = tf.placeholder(tf.float32, shape=[2,2])
y = tf.identity(x)
x_vals = np.random.rand(2,2)
sess.run(y, feed_dict={x: x_vals})
# Note that sess.run(x, feed_dict={x: x_vals}) will result in a self-referencing  error.

三、最新情况:
      这篇博客写到一半,还是觉得tensorflow各种用法好麻烦。查了一下,出了tensorflow2.0版本,1.x版本明年估计也停止维护了。。可能是看自己快被pytorch打败了,不得不做出的改变。所以我还是愉快地去学习一下tensorflow2.0,看看论文看看pytorch吧。。。

附上几个tf2.0的学习链接:
1.tf的改动:
https://www.jianshu.com/p/362a50826268

2.eager execution(让tf代码顺序执行!更加pythonic!)的学习例子:
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/eager/python/examples

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值