ในกรณีที่ค่าที่เราศึกษาอยู่มีการเปลี่ยนแปลงตลอดเวลา ใน TensorFlow เช่นการอ่านค่าจาก sensor ใน TensorFlow จะใช้ variable
Variable [1]
อธิบาย
#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
อธิบาย
#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
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
ความคิดเห็น
แสดงความคิดเห็น