การใช้ verbose ใน Keras ขณะตรวจสอบโมเดลคืออะไร?


96

ฉันใช้งานรุ่น LSTM เป็นครั้งแรก นี่คือโมเดลของฉัน:

opt = Adam(0.002)
inp = Input(...)
print(inp)
x = Embedding(....)(inp)
x = LSTM(...)(x)
x = BatchNormalization()(x)
pred = Dense(5,activation='softmax')(x)

model = Model(inp,pred)
model.compile(....)

idx = np.random.permutation(X_train.shape[0])
model.fit(X_train[idx], y_train[idx], nb_epoch=1, batch_size=128, verbose=1)

การใช้ verbose ขณะฝึกโมเดลคืออะไร?

คำตอบ:


228

ตรวจสอบเอกสารสำหรับ model.fit ที่นี่ที่นี่

ด้วยการตั้งค่า verbose 0, 1 หรือ 2 คุณเพียงแค่บอกว่าคุณต้องการ 'ดู' ความคืบหน้าการฝึกอบรมสำหรับแต่ละยุคอย่างไร

verbose=0 จะไม่แสดงอะไร (เงียบ)

verbose=1 จะแสดงแถบความคืบหน้าแบบเคลื่อนไหวดังนี้:

progres_bar

verbose=2 จะกล่าวถึงจำนวนยุคเช่นนี้:

ป้อนคำอธิบายภาพที่นี่


21
verbose: จำนวนเต็ม 0, 1 หรือ 2. โหมดคำพูด 0 = เงียบ 1 = แถบความคืบหน้า 2 = หนึ่งบรรทัดต่อยุค ขอบคุณ @ank you rock ..
rakesh

2
ความคิดเห็นนี้เป็นคำตอบที่ดีที่สุดสำหรับคำถามดีกว่าคำตอบที่แสดงความคิดเห็น สังเกตสิ่งนี้และพยายามหลีกเลี่ยงคำเพื่อให้คำตอบยาวขึ้น @rakesh คุณร็อค
Konstantin Sekeresh

22

verbose: Integer. 0, 1 หรือ 2. โหมดคำพูด

Verbose = 0 (เงียบ)

Verbose = 1 (แถบความคืบหน้า)

Train on 186219 samples, validate on 20691 samples
Epoch 1/2
186219/186219 [==============================] - 85s 455us/step - loss: 0.5815 - acc: 
0.7728 - val_loss: 0.4917 - val_acc: 0.8029
Train on 186219 samples, validate on 20691 samples
Epoch 2/2
186219/186219 [==============================] - 84s 451us/step - loss: 0.4921 - acc: 
0.8071 - val_loss: 0.4617 - val_acc: 0.8168

Verbose = 2 (หนึ่งบรรทัดต่อยุค)

Train on 186219 samples, validate on 20691 samples
Epoch 1/1
 - 88s - loss: 0.5746 - acc: 0.7753 - val_loss: 0.4816 - val_acc: 0.8075
Train on 186219 samples, validate on 20691 samples
Epoch 1/1
 - 88s - loss: 0.4880 - acc: 0.8076 - val_loss: 0.5199 - val_acc: 0.8046

คุณช่วยอธิบายได้ไหมว่าทำไมฉันถึงไม่ได้รับผลลัพธ์ที่คาดหวังไว้สำหรับความแตกต่างของ verbose ฉันได้รับเอาต์พุต [เงียบ] เดียวกันสำหรับ verbose = 0 และ 2 สำหรับไฟล์ของฉัน? และสำหรับ verbose = 1 ฉันจะได้รับแถบความคืบหน้าเมื่อสิ้นสุดยุคเช่นยุค 10/10 - 21 - การสูญเสีย: 0.2354 - acc: 0.9286 - val_loss: 0.2206 - val_acc: 0.9344 [======== ======================] ความถูกต้อง: 0.9344 ข้อผิดพลาด: 6.560000000000002
ดร. ณิชา

คำตอบที่ดีช่วยฉันด้วย ใช้ได้สำหรับ tensorflow 2.2
Bobs Burgers

9

สำหรับverbose> 0 fitบันทึกวิธีการ:

  • ขาดทุน : มูลค่าของฟังก์ชันการสูญเสียสำหรับข้อมูลการฝึกอบรมของคุณ
  • acc : ค่าความแม่นยำสำหรับข้อมูลการฝึกอบรมของคุณ

หมายเหตุ: หากมีการใช้กลไกการทำให้เป็นมาตรฐานกลไกจะถูกเปิดเพื่อหลีกเลี่ยงการติดตั้งมากเกินไป

ถ้าvalidation_dataหรือvalidation_splitอาร์กิวเมนต์ไม่ว่างเปล่าfitบันทึกวิธีการ:

  • val_loss : ค่าของฟังก์ชันการสูญเสียสำหรับข้อมูลการตรวจสอบของคุณ
  • val_acc : ค่าความถูกต้องสำหรับข้อมูลการตรวจสอบของคุณ

หมายเหตุ: กลไกการทำให้เป็นมาตรฐานถูกปิดในเวลาทดสอบเนื่องจากเราใช้ความสามารถทั้งหมดของเครือข่าย

ตัวอย่างเช่นการใช้verboseขณะฝึกโมเดลจะช่วยในการตรวจจับการติดตั้งมากเกินไปซึ่งจะเกิดขึ้นหากคุณaccปรับปรุงval_accอยู่ตลอดเวลา


การทำให้สม่ำเสมอกับพารามิเตอร์ verbosity คืออะไร!
Chrisji

พารามิเตอร์ Verbose ไม่มีผลกระทบต่อกลไกการทำให้เป็นมาตรฐาน ฉันแค่เพิ่มข้อมูลเกี่ยวกับสิ่งที่จะแสดงหากเปิดใช้งาน verbose (เพื่อตอบคำถามเริ่มต้น "การใช้ verbose ขณะฝึกโมเดลคืออะไร" => ex: หลีกเลี่ยงการใส่อุปกรณ์มากเกินไปโดยการเปรียบเทียบ acc และ val_acc)
Hugo Bevilacqua

2

โดยค่าเริ่มต้น verbose = 1

verbose = 1 ซึ่งมีทั้งแถบความคืบหน้าและหนึ่งบรรทัดต่อยุค

verbose = 0 หมายถึงเงียบ

verbose = 2 หนึ่งบรรทัดต่อยุคเช่น epoch no./total no. ของยุค


0

ลำดับของรายละเอียดที่ให้มาพร้อมกับแฟล็ก verbose เป็นดังนี้

รายละเอียดน้อย .... รายละเอียดเพิ่มเติม

0 <2 <1

ค่าเริ่มต้นคือ 1

สำหรับสภาพแวดล้อมการผลิตแนะนำให้ใช้ 2

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.