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。

你可能感兴趣的:(Tensorflow三行代码从入门到精通)