global_step หมายถึงอะไรใน Tensorflow


90

นี่คือรหัสการสอนจากเว็บไซต์ TensorFlow

  1. ใครช่วยอธิบายความglobal_stepหมายได้บ้าง

    ฉันพบในเว็บไซต์ Tensorflow ที่เขียนว่าglobal step นั้นใช้ขั้นตอนการฝึกนับแต่ฉันไม่ค่อยเข้าใจว่ามันหมายถึงอะไร

  2. นอกจากนี้ตัวเลข 0 หมายความว่าอย่างไรเมื่อตั้งค่าglobal_step?

    def training(loss,learning_rate):
        tf.summary.scalar('loss',loss)
        optimizer = tf.train.GradientDescentOptimizer(learning_rate)
        
        # Why 0 as the first parameter of the global_step tf.Variable?
        global_step = tf.Variable(0, name='global_step',trainable=False)

        train_op = optimizer.minimize(loss, global_step=global_step)
    
        return train_op

ตาม Tensorflow doc global_step: เพิ่มขึ้นโดยหนึ่งหลังจากตัวแปรได้รับการปรับปรุง หมายความว่าหลังจากการอัปเดตหนึ่งครั้งglobal_stepกลายเป็น 1 หรือไม่?

คำตอบ:


113

global_stepหมายถึงจำนวนแบทช์ที่กราฟเห็น ทุกครั้งที่มีการจัดหาชุดงานน้ำหนักจะได้รับการอัปเดตในทิศทางที่ลดการสูญเสียให้น้อยที่สุด global_stepเพียงแค่ติดตามจำนวนแบทช์ที่เห็นจนถึงตอนนี้ เมื่อส่งผ่านminimize()รายการอาร์กิวเมนต์ตัวแปรจะเพิ่มขึ้นทีละหนึ่ง มองไปที่optimizer.minimize() .

คุณจะได้รับค่าใช้global_step tf.train.global_step()วิธียูทิลิตี้tf.train.get_global_stepหรือtf.train.get_or_create_global_step .

0 คือค่าเริ่มต้นของขั้นตอนส่วนกลางในบริบทนี้


ขอบคุณ! ในการเชื่อมโยงที่คุณให้tf.train.global_step()ที่global_step_tensorถูกตั้งไว้ที่ 10 หมายความว่า 10 สำหรับกระบวนการจะเห็นแล้วโดยกราฟ?
GabrielChu

9
@martianwars ฉันยังไม่เข้าใจว่ามี global_step ไม่ใช่การวนซ้ำสำหรับแบทช์ที่ขับเคลื่อนโดยโปรแกรม python เองดังนั้นโปรแกรม python จึงสามารถรู้ได้อย่างง่ายดายว่ามีการทำแบทช์ไปแล้วกี่ชุด ทำไมต้องกังวลที่จะมีเทนเซอร์โฟลว์เพื่อรักษาเคาน์เตอร์ดังกล่าว?
victorx

1
เครื่องมือเพิ่มประสิทธิภาพเปลี่ยนค่าคงที่ตามขั้นตอนทั่วโลก @xwk
martianwars

24
เพื่อตอบคำถามของ xwk ฉันคิดว่าถ้าคุณหยุดการฝึกหลังจากทำซ้ำ 100 ครั้งและในวันถัดไปจะกู้คืนโมเดลและเรียกใช้การทำซ้ำอีก 100 ครั้ง ตอนนี้ขั้นตอนทั่วโลกของคุณคือ 200 แต่การรันครั้งที่สองมีหมายเลขการวนซ้ำแบบโลคัลตั้งแต่ 1 ถึง 100 ซึ่งเป็นค่าภายในของการรันนั้นเทียบกับขั้นตอนการวนซ้ำส่วนกลาง ดังนั้นขั้นตอนทั่วโลกจะบันทึกจำนวนการทำซ้ำทั้งหมดอาจใช้สำหรับการเปลี่ยนอัตราการเรียนรู้หรือไฮเปอร์พารามิเตอร์อื่น ๆ
Wei Liu

6
เพื่อสร้างคำตอบของ Wei Liu ขั้นตอนทั่วโลกยังมีประโยชน์สำหรับการติดตามความคืบหน้าของงาน TensorFlow แบบกระจาย เนื่องจากคนงานเห็นแบตช์พร้อมกันจึงจำเป็นต้องมีกลไกในการติดตามจำนวนทั้งหมดที่เห็น นี่คือวิธีที่StopAtStepHookดำเนินการเช่น
Malo Marrec

4

global_step Variableถือจำนวนรวมของขั้นตอนระหว่างการฝึกอบรมทั่วงาน (แต่ละดัชนีขั้นตอนที่จะเกิดขึ้นเฉพาะในงานเดียว)

ไทม์ไลน์ที่สร้างขึ้นglobal_stepช่วยให้เราเข้าใจว่าเราอยู่ที่ไหนในโครงการใหญ่จากแต่ละงานแยกกัน ตัวอย่างเช่นการสูญเสียและความแม่นยำอาจถูกนำมาใช้กับglobal_stepTensorboard


4

แสดงตัวอย่างที่สดใสด้านล่าง:

รหัส:

train_op = tf.train.GradientDescentOptimizer(learning_rate=LEARNING_RATE).minimize(loss_tensor,global_step=tf.train.create_global_step())
with tf.Session() as sess:
    ...
    tf.logging.log_every_n(tf.logging.INFO,"np.mean(loss_evl)= %f at step %d",100,np.mean(loss_evl),sess.run(tf.train.get_global_step()))

พิมพ์ที่สอดคล้องกัน

INFO:tensorflow:np.mean(loss_evl)= 1.396970 at step 1
INFO:tensorflow:np.mean(loss_evl)= 1.221397 at step 101
INFO:tensorflow:np.mean(loss_evl)= 1.061688 at step 201

1

มีเครือข่ายเช่น GAN ซึ่งอาจต้องใช้ขั้นตอนที่แตกต่างกันสองขั้นตอน (หรือมากกว่า) การฝึกอบรม GAN ด้วยข้อกำหนด WGAN ต้องการให้ขั้นตอนต่างๆบนเครื่องแยกแยะ (หรือนักวิจารณ์) D มีมากกว่าขั้นตอนที่ทำบนเครื่องกำเนิด G ในกรณีนี้การประกาศตัวแปร global_steps ที่แตกต่างกันจะเป็นประโยชน์

ตัวอย่าง: ( G_lossและD_lossเป็นการสูญเสียของเครื่องกำเนิดไฟฟ้าและตัวแยกแยะ)

G_global_step = tf.Variable(0, name='G_global_step', trainable=False)
D_global_step = tf.Variable(0, name='D_global_step', trainable=False)

minimizer = tf.train.RMSPropOptimizer(learning_rate=0.00005)

G_solver = minimizer.minimize(G_loss, var_list=params, global_step=G_global_step)
D_solver = minimizer.minimize(D_loss, var_list=params, global_step=D_global_step)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.