เริ่มเรียน TensorFlow ตอนที่ 2 Variable และ PlaceHolders

ในกรณีที่ค่าที่เราศึกษาอยู่มีการเปลี่ยนแปลงตลอดเวลา ใน TensorFlow เช่นการอ่านค่าจาก sensor ใน TensorFlow จะใช้ variable

Variable [1]

import numpy as np
import tensorflow as tf

session = tf.Session() # (1)
data = np.linspace(-5,5,10) # (2)
variable = tf.Variable(0,name="variable") #(3)
tf.global_variables_initializer() #(4)

with session :
    for i in range(0,len(data)):
        update = tf.assign(variable,data[i]) #(5)
        update.eval() # (6)        
        print("Value ={}".format(variable.eval()))      
    
session.close() #(7)









อธิบาย
#1 : สร้าง session ขึ้นมา
#2 : สร้างชุดข้อมูลสมมุติ ให้มีค่าระหว่าง -5 ถึง 5 จำนวน 10 จำนวน
#3 : สร้าง instance ของ TensorFlow Variable และได้กำหนดค่าเริ่มต้นเป็น 0
#4 : เนื่องจาก Variable  จำเป็นต้องได้รับการ initialize ก่อนการใช้งาน
#5 : ใช้ TensorFlow.assing() เพื่อกำหนดค่าให้กับ Variable
#6 : หลังจาก assign ค่าใหม่กับ variable  แล้ว ต้องทำการ evaluate เพื่อให้ดูการเปลี่ยนแปลง
#7 : ปิด session หลังการใช้งาน


PlaceHolders [2]
เปรียบได้กับ Variable ที่ยังไม่ได้ถูกกำหนดค่า ทำหน้าที่เป็น input node  จะถูกกำหนดค่าเพื่อส่งค่าให้กับ session.run() โดยกำหนดในรุปแบบของ Dictionary ใช้ชื่อว่า feed_dict

x_data = np.random.randn(2,5) # (1)
y_data = np.random.randn(5,5) # (2)

with tf.Graph().as_default():
    x_holder = tf.placeholder(tf.float32,shape=(None,5)) #(3)
    y_holder = tf.placeholder(tf.float32,shape=(None,5)) #(4)
    matmul = tf.matmul(x_holder,y_holder) # (5)
    with tf.Session() as sess :
        result = sess.run(matmul,feed_dict={x_holder:x_data,y_holder:y_data}) #(6)
    print(result)   





อธิบาย
#1, #2 : สร้างข้อมูลเพื่อทดสอบ โดยการสร้าง matrix ที่มีขนาด 2x5 และ 5x5 ค่าของ element ภายในเกิดจากการสุ่มด้วย Probability Density Function แบบ Normal Distribution [4]
#3, #4 : สร้าง placeholder ขึ้นมาเพื่อใช้เป็น input node สำหรับข้อมูลที่สร้างใน #1,#2 ข้อสังเกตุคือจะมีการกำหนดโครงสร้างข้อมูลที่สอดคล้องกับข้อมูลที่จะทำการ feed ให้กับ placeholder ที่สร้างขึ้น
#5 : สร้าง operation node ชื่อ matmul โดยกำหนดให้นำเอา matrix มาคูณกัน (matrix product) [3][5]
#6 : ส่งค่า (feed) ข้อมูลให้กับ session ผ่านทาง placeholder






เอกสารอ้างอิง
[1] https://www.tensorflow.org/api_docs/python/tf/Variable
[2] https://www.tensorflow.org/api_docs/python/tf/placeholder
[3] https://www.tensorflow.org/api_docs/python/tf/matmul
[4] https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.randn.html
[5] https://somchaisom.blogspot.com/2018/05/matrices.html

ความคิดเห็น