1、Tensorflow新手入門

一、MacOS Tensorflow(CPU版本)下載和安裝

pip3 install tensorflow

二、Tensorflow的基本用法

  • 使用圖(graph)來表示計算任務
  • 在回話(Session)的上下文(context)中執行圖
  • 使用tensor表示數據
  • 經過變量(Variable)維護狀態
  • 使用feed和fetch能夠爲任意的操做賦值或者從中獲取數據

  綜述:Tensorflow圖中的節點稱爲op(operation),一個op得到o個或者多個tensor(數據)來執行計算,產生0個或者多個tensor(數據),每一個tensor是一個類型化的多維數組

  計算圖:Tensorflow程序一般分爲構建階段和執行階段,構建階段:op的執行步驟被描述成一個圖,執行階段:使用回話執行圖中的op

  構建圖:構建圖的第一步是建立源op(源op不須要任何輸入,如常量Constant),源op的輸出被傳遞給其它op作運算。Tensorflow Python庫有一個默認圖,op構造器能夠爲圖增長節點

import tensorflow as tf

# 建立一個常量op(節點),產生一個1X2矩陣
# 添加到默認圖中
# 構造器的返回值表明該常量的op的返回值
matrix1 = tf.constant([[3., 3.]])

# 建立一個常量op(節點),產生一個2X1矩陣
matrix2 = tf.constant([[2.],[2.]])

# 建立一個矩陣乘法matmul op,把matrix1和matrix2做爲輸入
# 返回值product表明矩陣乘法的結果

product = tf.matmul(matrix1, matrix2)

# 啓動默認圖
# 調用sess的run()方法來執行矩陣乘法的op,傳入值爲product,輸出矩陣的乘法op
# 返回值是一個numpy.ndarray對象
with tf.Session() as sess:
    result = sess.run(product)
    print(type(result),result)

   調用CPU或者GPU:通常不須要顯示指定CPU或者GPU,Tensorflow能自動檢測,使用找到的第一個來計算,若是機器上有超過一個可用的,爲來讓tensorflow使用,必須將op明確指派給它們執行。

with tf.Session() as sess:
    with tf.device('/gpu:1'):
        matrix1 = tf.constant([[3., 3.]])
        matrix2 = tf.constant([[2.], [2.]])
        product = tf.matmul(matrix1, matrix2)
  • '/cpu:0':機器的cpu
  • '/gpu:0':機器的第一個gpu
  • '/gpu:1':機器的第二個gpu
  • ....

  Tensor:Tensorflow程序使用tensor數據結構來表明數據,能夠把tensor當作一個n維數組或者列表,tensor包含靜態類型rank和shape

  變量:Variable維護圖執行過程當中的狀態

import tensorflow as tf

# 建立變量,初始化爲標量0
state = tf.Variable(0, name='counter')

# 建立一個op,使state增長1
one = tf.constant(1)
new_value = tf.add(state, one)
update = tf.assign(state, new_value)

# 初始全部化變量
init_op = tf.global_variables_initializer()

# 啓動圖,運行op
with tf.Session() as sess:
    # 運行init
    sess.run(init_op)
    print(sess.run(state))
    for _ in range(3):
        sess.run(update)
        print('new_value:',sess.run(new_value))
        print('state:',sess.run(state))
import tensorflow as tf

input1 = tf.constant(3.0)
input2 = tf.constant(2.0)
input3 = tf.constant(5.0)

intermed = tf.add(input2, input3)
mul = tf.multiply(input1, intermed)

with tf.Session() as sess:
    result = sess.run([mul, intermed])
    print(result)

Feed_dict和tf.placeholder:

  tf.placeholder(dtype, shape=None, name=None):佔位符沒有初始值,但必須指定類型數組

    參數:數據結構

      dtype:數據類型,tf.int32,float32,string等dom

      shape:數據形狀,默認None,shape=1,shape=[2,3],shape=[None,3]fetch

      name:名稱spa

    返回:Tensor類型code

  feed_dict:字典,給出placeholder的值對象

import tensorflow as tf
import numpy as np

# exp-1 x
= tf.placeholder(tf.string) with tf.Session() as sess: output = sess.run(x, feed_dict={x: 'Hello World!'}) print(output) # exp-2 x = tf.placeholder(tf.string) y = tf.placeholder(tf.int32) z = tf.placeholder(tf.float32) with tf.Session() as sess: output = sess.run([x,y,z], feed_dict={x: 'Hello World!', y:1, z:0.1}) print(output)
# exp-3 x
= tf.placeholder(tf.float32, shape=(None,3)) y = tf.matmul(x, x) with tf.Session() as sess: rand_array = np.random.rand(3,3) print(sess.run(y, feed_dict={x: rand_array}))
相關文章
相關標籤/搜索