Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีใช้ TensorFlow เพื่อฝึกโมเดลด้วยชุดข้อมูล Iliad โดยใช้ Python


TensorFlow เป็นเฟรมเวิร์ก Machine Learning ที่ Google พัฒนาและเป็น Open Source ใช้ร่วมกับ Python เพื่อนำอัลกอริทึม การเรียนรู้เชิงลึก (Deep Learning) และแอปพลิเคชันต่างๆ ไปใช้งานจริง สามารถใช้ทั้งในงานวิจัยและระบบ Production มีเทคนิคการเพิ่มประสิทธิภาพช่วยคำนวณทางคณิตศาสตร์ที่ซับซ้อนได้อย่างรวดเร็ว เนื่องจากใช้ NumPy และอาร์เรย์หลายมิติ (Multi-dimensional arrays) ซึ่งเรียกว่า "Tensors" เฟรมเวิร์กนี้รองรับการทำงานกับ Deep Neural Network ได้ดีเยี่ยม

สามารถติดตั้งแพ็กเกจ tensorflow บน Windows ด้วยคำสั่งด้านล่าง:

pip install tensorflow

Tensor เป็นโครงสร้างข้อมูลใน TensorFlow ช่วยเชื่อมโยดขอบในแผนภาพไหล (Flow Diagram) ที่เรียกว่า "Data Flow Graph" Tensor ก็คืออาร์เรย์หลายมิติหรือลิสต์ (List)

เราจะใช้ชุดข้อมูล Iliad ซึ่งประกอบด้วยข้อความจากงานแปล 3 ชิ้นของ William Cowper, Edward (Earl of Derby) และ Samuel Butler โมเดลจะถูกฝึกให้ระบุผู้แปลเมื่อได้รับบรรทัดข้อความเดี่ยว ไฟล์ข้อความได้รับการประมวลผลล่วงหน้า (Preprocessing) ได้แก่ การลบ Header, Footer, หมายเลขบรรทัด และชื่อบท

เราใช้ Google Colaboratory (Colab) ในการรันโค้ด Colab ช่วยให้รัน Python บนเบราว์เซอร์ ไม่ต้องตั้งค่า และเข้าถึง GPU ฟรี สร้างบน Jupyter Notebook

ตัวอย่างโค้ด

vocab_size += 2
print("Configure the dataset for better performance")
train_data = configure_dataset(train_data)
validation_data = configure_dataset(validation_data)
print("Train the model")
model = create_model(vocab_size=vocab_size, num_labels=3)
model.compile(
    optimizer='adam',
    loss=losses.SparseCategoricalCrossentropy(from_logits=True),
    metrics=['accuracy'])
print("Fit the training data to the model")
history = model.fit(train_data, validation_data=validation_data, epochs=3)
print("Finding the accuracy and loss associated with training")
loss, accuracy = model.evaluate(validation_data)
print("The loss is : ", loss)
print("The accuracy is : {:2.2%}".format(accuracy))

Credit โค้ด: TensorFlow Tutorials

ผลลัพธ์

Configure the dataset for better performance
Train the model
Fit the training data to the model
Epoch 1/3
697/697 [==============================] - 35s 17ms/step - loss: 0.6891 - accuracy: 0.6736 - val_loss: 0.3718 - val_accuracy: 0.8404
Epoch 2/3
697/697 [==============================] - 8s 11ms/step - loss: 0.3149 - accuracy: 0.8713 - val_loss: 0.3621 - val_accuracy: 0.8422
Epoch 3/3
697/697 [==============================] - 8s 11ms/step - loss: 0.2165 - accuracy: 0.9162 - val_loss: 0.4002 - val_accuracy: 0.8404
Finding the accuracy and loss associated with training
79/79 [==============================] - 1s 2ms/step - loss: 0.4002 - accuracy: 0.8404
The loss is : 0.40021833777427673
The accuracy is : 84.04%

คำอธิบาย

  • โมเดลถูกฝึกบนชุดข้อมูลที่ผ่านการประมวลผลและเวกเตอร์ไรส์ (Vectorized) แล้ว

  • จากนั้นคอมไพล์และฝึก (Fit) เข้ากับโมเดล

  • Loss และ Accuracy ประเมินผลด้วยเมธอด evaluate

  • แสดงผลบน Console