CNTK - Mạng thần kinh tích chập

Giới thiệu

Trong các phần trước, chúng tôi đã thực hiện một số xác nhận trên các mô hình NN của mình. Tuy nhiên, việc giám sát mô hình của chúng tôi trong quá trình đào tạo có cần thiết và có thể thực hiện được không?

Có, chúng tôi đã sử dụng lớp ProgressWriter để giám sát mô hình của mình và có nhiều cách khác để làm điều đó. Trước khi đi sâu vào các cách, trước tiên chúng ta hãy xem cách hoạt động của tính năng giám sát trong CNTK và cách chúng ta có thể sử dụng tính năng này để phát hiện sự cố trong mô hình NN của mình.

Cuộc gọi lại trong CNTK

Trên thực tế, trong quá trình đào tạo và xác thực, CNTK cho phép chúng tôi chỉ định lệnh gọi lại ở một số vị trí trong API. Trước tiên, chúng ta hãy xem xét kỹ hơn khi CNTK gọi lại lệnh gọi lại.

Khi CNTK gọi lại cuộc gọi?

CNTK sẽ gọi lại các cuộc gọi lại tại thời điểm tập huấn luyện và kiểm tra khi−

  • Một minibatch đã được hoàn thành.
  • Việc quét toàn bộ tập dữ liệu được hoàn thành trong quá trình đào tạo.
  • Một đợt thử nghiệm nhỏ đã được hoàn thành.
  • Việc quét toàn bộ tập dữ liệu được hoàn thành trong quá trình thử nghiệm.

Chỉ định cuộc gọi lại

Trong khi làm việc với CNTK, chúng tôi có thể chỉ định lệnh gọi lại ở một số vị trí trong API. Ví dụ-

Khi gọi train về chức năng mất?

Ở đây, khi gọi train trên một hàm loss, chúng ta có thể chỉ định một tập hợp các lệnh gọi lại thông qua đối số callbacks như sau−

training_summary=loss.train((x_train,y_train),
parameter_learners=[learner],
callbacks=[progress_writer]),
minibatch_size=16, max_epochs=15)

Khi làm việc với các nguồn minibatch hoặc sử dụng vòng lặp minibatch thủ công−

Trong trường hợp này, chúng ta có thể chỉ định lệnh gọi lại cho mục đích giám sát trong khi tạo Huấn luyện viên như sau

from cntk.logging import ProgressPrinter
callbacks = [
   ProgressPrinter(0)
]
Trainer = Trainer(z, (loss, metric), learner, [callbacks])

Các công cụ giám sát khác nhau

Hãy để chúng tôi nghiên cứu về các công cụ giám sát khác nhau.

Tiến độ Máy in

Khi đọc hướng dẫn này, bạn sẽ thấy ProgressPrinter là công cụ giám sát được sử dụng nhiều nhất. Một số đặc điểm của công cụ giám sát ProgressPrinter là−

Lớp ProgressPrinter triển khai ghi nhật ký cơ bản dựa trên bảng điều khiển để giám sát mô hình của chúng tôi. Nó có thể đăng nhập vào đĩa mà chúng ta muốn.

Đặc biệt hữu ích khi làm việc trong kịch bản đào tạo phân tán.

Nó cũng rất hữu ích khi làm việc trong tình huống mà chúng ta không thể đăng nhập vào bảng điều khiển để xem đầu ra của chương trình Python.

Với sự trợ giúp của đoạn mã sau, chúng ta có thể tạo một phiên bản của ProgressPrinter− ProgressPrinter(0, log_to_file=’test.txt’)Chúng ta sẽ nhận được kết quả đầu ra mà chúng ta đã thấy trong các phần trước−

Test.txt
CNTKCommandTrainInfo: train : 300
CNTKCommandTrainInfo: CNTKNoMoreCommands_Total : 300
CNTKCommandTrainBegin: train
-------------------------------------------------------------------
average since average since examples
loss last metric last
------------------------------------------------------
Learning rate per minibatch: 0.1
1.45 1.45 -0.189 -0.189 16
1.24 1.13 -0.0382 0.0371 48
[………]
TensorBoard

Một trong những nhược điểm của việc sử dụng ProgressPrinter là chúng ta không thể có cái nhìn rõ ràng về mức độ khó khăn của việc mất mát và tiến triển số liệu theo thời gian. TensorBoardProgressWriter là một sự thay thế tuyệt vời cho lớp ProgressPrinter trong CNTK.

Trước khi sử dụng nó, trước tiên chúng ta cần cài đặt nó với sự trợ giúp của lệnh sau – pip install tensorboardBây giờ, để sử dụng TensorBoard, chúng ta cần thiết lập TensorBoardProgressWriter trong mã đào tạo của mình như sau−

import time
from cntk.logging import TensorBoardProgressWriter
tensorbrd_writer = TensorBoardProgressWriter(log_dir=’logs/{}’.format(time.time()),freq=1,model=z)

Bạn nên gọi phương thức đóng trên phiên bản TensorBoardProgressWriter sau khi hoàn tất việc đào tạo NNmô hình.

Chúng ta có thể trực quan hóa dữ liệu ghi nhật ký TensorBoard với sự trợ giúp của lệnh sau − Tensorboard –logdir logs

Xem thêm : CNTK – Mạng thần kinh tích chập

Để lại một bình luận