Cung cấp sức mạnh cho làn sóng thiết bị thông minh tiếp theo với học máy: Phần 2


Lý Kiều Giang
8 tháng trước
Hữu ích 5 Chia sẻ Viết bình luận 0
Đã xem 7006

Trong phần đầu tiên của loạt bài này , chúng tôi đã giới thiệu các liên kết BigML Node-RED và chỉ ra cách cài đặt và sử dụng chúng để tạo ra một luồng cung cấp BigML đơn giản trong Node-RED. Trong phần thứ hai này, chúng ta sẽ tạo ra một luồng thứ hai sẽ cho chúng ta cơ hội để xem xét, chi tiết hơn, các khái niệm quan trọng như khớp đầu vào-đầu ra và thống nhất nút.

Sử dụng một bộ đồng phục hiện tại để dự đoán

Như một ví dụ thứ hai về cách bạn có thể sử dụng BigML với Node-RED, hãy xây dựng một luồng khác sẽ sử dụng tập hợp được tạo trong phần đầu tiên của chúng tôi để đưa ra dự đoán mỗi khi có sự kiện mới xảy ra.

Một cách tuyệt vời để xác định tài nguyên BigML là thông qua việc tagbạn chỉ định tài nguyên đó tại thời điểm tạo. Thẻ có thể đại diện cho những gì mà nhóm được sử dụng cho hoặc bất kỳ loại thông tin nào khác có thể giúp bạn phân biệt nó với các tài nguyên khác cùng loại trong tài khoản BigML của bạn. Ví dụ, một lúc nào đó bạn có thể muốn tạo một phiên bản mới của bản hòa tấu đó bằng cách đưa vào dữ liệu đào tạo gần đây hơn. Nếu bạn giữ cùng một thẻ cho mỗi phiên bản liên tiếp của bản hòa tấu, bạn sẽ có thể tìm thấy tất cả các bản hòa âm chia sẻ cùng một thẻ và xác định phiên bản mới nhất bằng cách xem ngày tạo. Một cách tiếp cận khác để làm điều tương tự là tạo ra một dự án sẽ duy nhất là nhà của tất cả các phiên bản kế tiếp của bản hòa tấu. Trong trường hợp này, bạn sẽ không lọc dựa trên các thẻ, thay vào đó là dự án.

Để cung cấp thêm chất cho điều này, chúng tôi sẽ trình bày cách bạn có thể tạo một luồng đến:

  1. Chọn tập hợp gần đây nhất được gắn thẻ với một thẻ nhất định.
  2. Sử dụng nó để tạo một dự đoán từ xa bất cứ khi nào một sự kiện mới đến.

Điều đầu tiên, chúng ta cần có một bản hòa tấu với một thẻ theo ý thích của chúng tôi, để chúng tôi biết nên sử dụng thẻ nào ở bước 1. Để đạt được mục đích này, chúng ta hãy sửa đổi một chút dòng chảy mà chúng ta đã xác định trong phần trước để làm cho nó gán một thẻ cho tập hợp nó tạo ra. Đối với điều này, chỉ cần nhấp đúp vào nút đồng bộ và tra cứu Tagstrường và làm cho nội dung của nó được đọc như thế trong hình ảnh sau đây.

Các Tagsgiá trị trường là ["ProductionEnsemble"]bởi vì bạn có thể chỉ định bất kỳ số lượng thẻ cho nguồn BigML của bạn. Ví dụ, để gán FraudDetectionthẻ, bạn sẽ sử dụng
["ProductionEnsemble", "FraudDetection"].

Khi bạn đã thực hiện điều đó, hãy nhấp vào Donenút, sau đó là Deploynút và cuối cùng là gửi một thông báo mới với nút tiêm để có luồng tạo ra một bộ tài nguyên mới, bao gồm cả nhóm được gắn thẻ của chúng tôi.

Bây giờ, chúng ta có thể tạo một luồng con mới trong sơ đồ của mình bằng một Findnút. Tìm nó trong bảng nút bên trái và kéo nó vào khu vực canvas, sau đó bấm đúp vào nó để truy cập cấu hình của nó. Ở đây, chúng tôi muốn chỉ định loại tài nguyên mà nút sẽ tìm kiếm và một thẻ mà nó nên chứa, như hình ảnh sau đây cho thấy:

Khi bạn đã hoàn thành với điều này, bấm vào Done. Sau đó, thêm một Predictionnút vào khung vẽ và kết nối Findđầu ra Predictionnút với đầu vào nút. Tiếp theo, thêm một Reifynút để kiểm soát việc thực hiện luồng của chúng tôi và kết nối nó với Predictionnút.

Cuối cùng, chúng tôi cần một nút tiêm gửi qua thông tin xác thực API BigML của bạn. Bạn có thể sao chép / dán nút tiêm ban đầu mà bạn đã có. Bên cạnh thông tin đăng nhập của bạn, nút tiêm cũng nên thêm một sự kiện được sử dụng làm đầu vào cho dự đoán. Chúng tôi thực hiện điều này bằng cách thêm một input_datatrường vào JSON được chèn, như thể hiện trong hình bên dưới.

Bây giờ, nếu chúng tôi cố gắng chạy luồng này bằng cách chèn một sự kiện (chỉ cần nhấp vào bảng nhập nút đầu vào), chúng tôi sẽ gặp lỗi.

Nếu bạn xem kỹ thông báo lỗi, bạn sẽ thấy nó hiển thị nút gây ra lỗi, tức là predictionnút và nguyên nhân lỗi:

Điều này về cơ bản có nghĩa là predictionnút không tìm thấy giá trị bắt buộc, tức là modeltrong thông báo đến. Nếu bạn di chuột cổng đầu ra của Find Latest Production Ensemblenút và cổng đầu vào của predictionnút, bạn sẽ thấy cổng đầu ra của trình định dạng được đặt tên resourcetrong khi cổng đầu vào của nút sau được đặt tên model.

Điều này có nghĩa là:

  • Các findnút sẽ thêm một resourcethuộc tính vào trọng tải thông điệp.
  • Các predictionnút sẽ yêu cầu một modeltài sản và một input_datatài sản để hoạt động đúng.

Chúng tôi đảm bảo rằng input_datađược cung cấp bởi injectnút, vì vậy cái phải thiếu là thuộc modeltính. Các modelbất động sản đại diện cho mô hình chúng tôi muốn sử dụng cho các dự đoán. Nhưng, này! Đây chính xác là những gì findnút nên tạo ra trong đầu ra của nó. Do đó, vấn đề ở đây là sự không phù hợp giữa findđầu ra nút và predictionđầu vào nút.

Chúng ta có thể sửa lỗi này bằng cách đổi tên findcổng đầu ra của nút thành model. Để làm điều này, bấm đúp vào findnút và sau đó hiển thị node settingskhung, ngay bên dưới node propertieskhung chúng ta đã sử dụng mọi lúc. Ở đây, thêm modellàm tên cổng đầu ra cho cổng đầu ra duy nhất được xác định, như thể hiện trong hình dưới đây.

Với vị trí này, nhấp Done, sau đó Deployvà gửi một tin nhắn mới. Lần này, luồng sẽ thực thi chính xác và đưa ra đầu ra sau, nơi bạn có thể thấy một dự đoán đã được tạo và kết quả của nó được lưu trữ dưới khóa result.

Nếu bạn muốn nhận kết quả dự đoán theo một khóa khác, bạn chỉ phải thay đổi reifycài đặt nút và chỉ định khóa đó làm tên cổng đầu ra, như hình ảnh sau đây sẽ hiển thị.

Tầm quan trọng của nút Reifying

Trong cả hai ví dụ của chúng tôi ở trên, chúng tôi đã sử dụng một nút đặc biệt, được gọi là Reifynút, ở cuối dòng của chúng tôi. Điều này về cơ bản có hai mục tiêu:

  • Kích hoạt việc thực hiện luồng trên BigML . Khi bạn tạo sơ đồ luồng bằng các ràng buộc BigML Node-RED, điều xảy ra đằng sau cảnh là một tập lệnh WhizzML được tạo để thực hiện luồng đó. Điều này đòi hỏi bạn phải thông báo cho NodeRED khi luồng của bạn hoàn tất và bạn muốn thực hiện nó.
  • Trích xuất giá trị từ một tài nguyên . Do nhiều hoạt động BigML tạo ra các tài nguyên mới, được xác định thông qua ID tài nguyên, nên nút Reify cũng phục vụ một mục đích khác, đó là lấy định nghĩa tài nguyên thực tế và trích xuất một giá trị cụ thể từ nó. Chúng tôi đã thấy rằng trong hành động trong ví dụ cuối cùng của chúng tôi, nơi chúng tôi đã tạo ra một dự đoán và trích xuất outputkhóa, sau đó được gửi với tải trọng dưới resultkhóa hoặc predictionOutcometùy thuộc vào cấu hình nút.

Ở mức độ trừu tượng hơn, bạn có thể nói rằng bạn cần thống nhất khi bạn muốn đi từ vương quốc BigML / WhizzML xuống các giá trị cụ thể mà bạn có thể chuyển sang các loại nút Node-RED khác. Điều này có nghĩa là bất cứ khi nào bạn muốn sử dụng kết quả của một luồng BigML trong một nút không phải BigML, bạn nên xác định lại nó. Chúng tôi đã làm chính xác điều này trong các ví dụ được trình bày ở đây trước khi đưa đầu ra nút BigML vào nút gỡ lỗi Node-RED. Một tình huống khác mà bạn sẽ muốn xác định lại đầu ra nút BigML của mình là khi bạn kết nối nó với nhiều nút, bao gồm nhiều nút BigML.

Do việc xác định lại là một bước phổ biến như vậy, các liên kết BigML Node-RED cung cấp một cách bổ sung để xác định lại đầu ra của một nút. Trong thực tế, bạn có thể xác định lại bất kỳ đầu ra nút nào bằng cách chọn thuộc Reifytính trong bảng chỉnh sửa nút đó, như thể hiện trong hình ảnh sau đây.

Bạn có thể sử dụng tùy chọn này bất cứ khi nào bạn muốn xác định lại một nút và không cần lấy tài nguyên tương ứng để trích xuất một giá trị cụ thể từ nó (vì nút Reify sẽ cho phép bạn thực hiện bằng cách cung cấp đường dẫn khóa đầu ra như đã thảo luận ở trên).

Cách tốt hơn để chuyển thông tin xác thực đến nút

Chúng tôi đã xem xét cách bạn có thể cung cấp thông tin đăng nhập BigML của mình, vì vậy các nút bạn tạo có thể truy cập vào tài khoản BigML của bạn. Mặc dù rất dễ thực hiện, tùy chọn này sẽ khiến thông tin đăng nhập của bạn được di chuyển dọc theo luồng của bạn được nhúng trong tải trọng thư. Đây có thể không phải là một giải pháp tốt cho bạn, vì vậy các ràng buộc BigML Node-RED cung cấp một cách bổ sung để cho các nút BigML của bạn biết tài khoản BigML nào họ nên truy cập và có thể gửi thông tin đăng nhập cần thiết.

Ngoài việc gửi thông tin đăng nhập BigML của bạn với tải trọng thư, bạn có thể lưu trữ chúng trong ngữ cảnh luồng, đó là cấu trúc dữ liệu đặc biệt mà Node-RED quản lý để có thể truy cập được trong một luồng. Để đặt thuộc tính ngữ cảnh luồng, bạn có thể sử dụng nút tiêu chuẩn Node-RED change. Kéo nó từ bảng nút và sau đó đặt thuộc tính của nó như trong hình dưới đây.

Nút thay đổi sẽ chỉ thực hiện công việc của nó khi nó được kích hoạt bởi một sự kiện. Vì vậy, bạn nên đảm bảo kích hoạt nó trước khi bạn thực sự cố gắng thống nhất bất kỳ nút BigML nào. Hình ảnh sau đây cho thấy cách bạn có thể làm điều đó một cách đáng tin cậy.

Phần kết luận

Trong phần thứ hai này của loạt bài về các ràng buộc BigML Node-RED, chúng tôi đã thảo luận về cách kết nối đúng đầu vào và đầu ra, vượt qua thông tin đăng nhập của bạn để chúng không được truyền qua toàn bộ luồng và xác thực nút. Trong phần tiếp theo của loạt bài này, chúng tôi sẽ trình bày các tài liệu nâng cao hơn, bao gồm thảo luận chuyên sâu về đầu vào và đầu ra, các chiến lược để sửa lỗi và cách thêm bộ xử lý WhizzML có thể chạy mã WhizzML của riêng bạn. Hãy cho chúng tôi biết bạn đang sử dụng các ràng buộc BigML Node-RED như thế nào và cung cấp bất kỳ phản hồi nào trong các bình luận bên dưới. Hãy theo dõi phần 3!

Hữu ích 5 Chia sẻ Viết bình luận 0
Đã xem 7006