Tensorflow三行代码从入门到精通

Tensorflow现状

为什么选择tensorflow呢?不是因为它多么多么屌,而是因为它的设计很符合一个神经网络库,比如说什么图啊,数据流啊,咋一听你可能没有感觉,你想一下神经网络不也是这样的吗?
至于mxnet,caffe这样的库,学会了tensorflow之后并没有感觉这些库有什么难点,更多是觉得这些库写的更乱。为什么这么说?因为这些库没有一个基础,也就是根本,不像tensorflow,你构建一个
深度神经网络模型,在复杂在难,它也是一个图,而且你可以跟踪每一个的输入输出,这个在caffe里面也有这种设计,只是通过prototxt来展示,但是我个人感觉那种格式机器看还可以,人看头疼。
闲话不多说,既然吹牛逼说三行代码入门那我们就三行代码。

重点

学习任何东西都只需要精髓,其它的,慢慢来,tf的精髓是什么呢?我刚才说了,是图,什么是图?神经网络结构就是一张图,你在把数据喂入之前,你需要把图建好。

只需要三行代码

import numpy as np
import tensorflow as tf


def test_tf_session():
    """
    this method playing with tensorflow 'Session',
    使用tensorlfow,你首先要创建一个图,然后通过会话来流动这张图,从而
    生成对应的tensor,也就是一个个的矩阵
    :return:
    """
    matrix1 = tf.constant([[1, 2, 3],
                           [2, 3, 4]])
    matrix2 = tf.constant([[3, 4, 2],
                           [1, 3, 4],
                           [3, 4, 5]])
    product = tf.matmul(matrix1, matrix2)
    sess = tf.Session()
    result = sess.run(product)
    print(result)


def test_tf_variable():
    """
    这个方法示例'Variable'的作用,它相当于一个存储器,存储中间变量
    :return:
    """
    # 首先我们定义一个Variable,名字叫state,初始值是38
    state = tf.Variable(38, name='state')
    add_value = tf.constant(3)
    new_value = tf.add(state, add_value)
    update = tf.assign(state, new_value)

    # 使用variable,在用会话启动它之前要初始化一下'Variable'
    # 要不然tf怎么知道你设定的初始值是多少呢?
    init_op = tf.initialize_all_variables()

    with tf.Session() as sess:
        sess.run(init_op)
        sess.run(new_value)
        for _ in range(3):
            # 执行这一步把state和add_value相加的值,得加到state自身
            sess.run(update)
            # 每一步执行之后我们看看state的值
            print(sess.run(state))


def test_tf_feed_data():
    """
    Feed data进入图之中,入口是placeholder,相当于占位符先把入口霸占一下,
    等数据来了再从这里进入图之中
    :return:
    """
    x = tf.placeholder(tf.float32, shape=(2, 3), name='matrix1')
    y = tf.placeholder(tf.float32, shape=(3, 4), name='matrix2')
    product = tf.matmul(x, y)
    data_x = [[1, 2, 3],
              [3, 4, 2]]
    data_y = [[2, 3, 4, 2],
              [1, 3, 4, 2],
              [2, 3, 4, 5]]
    # 我们指定了两个数据流入的入口,并且固定了形状,如果输入不对会报错,
    # 像这样正确的姿势塞进去,我们就能够得到product这个op的值
    with tf.Session() as sess:
        result = sess.run(product, feed_dict={x: data_x, y: data_y})
        print(result)


if __name__ == '__main__':
    # test_tf_variable()
    test_tf_feed_data()

很多人咋一看,卧槽,是我瞎吗?这尼玛哪里是三行代码。。莫方,我说的三行代码就是main里面的三个函数,而函数的实现你展示可以不用关心

第一行代码--Variable

test_tf_variable()

第二行代码--Session

test_tf_session()

第三行代码--Feed

test_tf_feed_data()

后记

毫无疑问,恭喜你已经入门了tensorflow。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简单线性回归 import tensorflow as tf import numpy # 创造数据 x_dat...
    CAICAI0阅读 3,560评论 0 49
  • 狮子座的我 白天可以有说有笑,所有的朋友说我性格开朗 晚上就整个人设崩塌,一天的委屈道不出 我也不会道出 因为自己...
    我的二皮脸阅读 139评论 0 0
  • 年初回国,因为忙着见朋友错过了按照惯例的一年一度的总结。在20岁的最后两个小时,坐在内罗毕的阳台上,看着澄澈的星...
    三年阅读 842评论 0 0
  • 事与愿违 内心充满懊悔 力不从心 心里充满惭愧 想法与行动不一 内心充满忐忑 每个人 都应该为其行为负责
    妮古力阅读 129评论 0 0
  • 本文转载自:http://foggry.com/blog/2014/04/25/githubyou-xiu-xia...
    mayqiyue阅读 13,372评论 13 257