TF1.x -> Tổng quan về di chuyển TF2

TensorFlow 2 về cơ bản khác với TF1.x ở một số điểm. Bạn vẫn có thể chạy mã TF1.x chưa sửa đổi ( ngoại trừ contrib ) đối với các cài đặt nhị phân TF2 như sau:

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

Tuy nhiên, điều này không chạy các hành vi và API của TF2 và có thể không hoạt động như mong đợi với mã được viết cho TF2. Nếu bạn không chạy với hành vi TF2 đang hoạt động, thì bạn đang chạy TF1.x một cách hiệu quả sau khi cài đặt TF2. Đọc hướng dẫn về hành vi TF1 và TF2 để biết thêm chi tiết về sự khác biệt giữa TF2 và TF1.x.

Hướng dẫn này cung cấp thông tin tổng quan về quy trình di chuyển mã TF1.x của bạn sang TF2. Điều này cho phép bạn tận dụng các cải tiến tính năng mới và trong tương lai, đồng thời làm cho mã của bạn đơn giản hơn, hiệu suất cao hơn và dễ bảo trì hơn.

Nếu bạn đang sử dụng các API cấp cao của tf.keras và đào tạo riêng với model.fit thì mã của bạn ít nhiều phải tương thích hoàn toàn với TF2 ngoại trừ những lưu ý sau:

Quá trình di chuyển TF2

Trước khi di chuyển, hãy tìm hiểu về sự khác biệt về hành vi và API giữa TF1.x và TF2 bằng cách đọc hướng dẫn .

  1. Chạy tập lệnh tự động để chuyển đổi một số cách sử dụng API TF1.x của bạn thành tf.compat.v1 .
  2. Xóa các ký hiệu tf.contrib cũ (kiểm tra TF AddonsTF-Slim ).
  3. Làm cho các lượt chuyển tiếp mô hình TF1.x của bạn chạy trong TF2 với tính năng thực thi háo hức được bật.
  4. Nâng cấp mã TF1.x của bạn cho các vòng đào tạo và lưu/tải mô hình lên tương đương TF2.
  5. (Tùy chọn) Di chuyển các API tf.compat.v1 tương thích TF2 của bạn sang các API TF2 đặc trưng.

Các phần sau đây mở rộng theo các bước được nêu ở trên.

Chạy tập lệnh chuyển đổi ký hiệu

Điều này thực thi bước đầu tiên khi viết lại các ký hiệu mã của bạn để chạy với các nhị phân TF 2.x, nhưng sẽ không làm cho mã của bạn trở nên đặc trưng với TF 2.x và cũng sẽ không tự động làm cho mã của bạn tương thích với các hành vi TF2.

Mã của bạn rất có thể sẽ vẫn sử dụng điểm cuối tf.compat.v1 để truy cập phần giữ chỗ, phiên, bộ sưu tập và chức năng kiểu TF1.x khác.

Đọc hướng dẫn để tìm hiểu thêm về các phương pháp hay nhất để sử dụng tập lệnh chuyển đổi ký hiệu.

Xóa việc sử dụng tf.contrib

Mô-đun tf.contrib đã ngừng hoạt động và một số mô-đun con của nó đã được tích hợp vào API TF2 cốt lõi. Các mô-đun con khác hiện được tách ra thành các dự án khác như TF IOTF Addons .

Một lượng lớn mã TF1.x cũ hơn sử dụng thư viện Slim , được đóng gói cùng với TF1.x dưới dạng tf.contrib.layers . Khi di chuyển mã Slim của bạn sang TF2, hãy chuyển cách sử dụng API Slim của bạn để trỏ đến gói tf-slim pip . Sau đó, đọc hướng dẫn lập bản đồ mô hình để tìm hiểu cách chuyển đổi mã Slim.

Ngoài ra, nếu bạn sử dụng các mô hình được đào tạo trước của Slim, bạn có thể cân nhắc dùng thử các mô hình được huấn luyện trước của Keras từ tf.keras.applications hoặc TF2 SavedModel của TF Hub được xuất từ ​​mã Slim ban đầu.

Làm cho các lượt chuyển tiếp mô hình TF1.x chạy khi bật các hành vi TF2

Theo dõi các biến số và tổn thất

TF2 không hỗ trợ các bộ sưu tập toàn cầu.

Việc thực thi háo hức trong TF2 không hỗ trợ các API dựa trên bộ sưu tập tf.Graph . Điều này ảnh hưởng đến cách bạn xây dựng và theo dõi các biến.

Đối với mã TF2 mới, bạn sẽ sử dụng tf.Variable thay vì v1.get_variable và sử dụng các đối tượng Python để thu thập và theo dõi các biến thay vì tf.compat.v1.variable_scope . Thông thường đây sẽ là một trong:

Danh sách tổng hợp các biến (như tf.Graph.get_collection(tf.GraphKeys.VARIABLES) ) với các thuộc tính .variables.trainable_variables của các đối tượng Layer , Module hoặc Model .

Các lớp LayerModel triển khai một số thuộc tính khác giúp loại bỏ nhu cầu về các bộ sưu tập chung. Thuộc .losses của chúng có thể thay thế cho việc sử dụng bộ sưu tập tf.GraphKeys.LOSSES .

Đọc hướng dẫn ánh xạ mô hình để tìm hiểu thêm về cách sử dụng miếng chêm mô hình hóa mã TF2 để nhúng mã dựa trên get_variablevariable_scope hiện có của bạn bên trong Layers , ModelsModules . Điều này sẽ cho phép bạn thực hiện chuyển tiếp với tính năng thực thi mong muốn được kích hoạt mà không cần phải viết lại nhiều.

Thích ứng với những thay đổi hành vi khác

Nếu bản thân hướng dẫn ánh xạ mô hình không đủ để giúp mô hình của bạn chuyển tiếp chạy các thay đổi hành vi khác có thể chi tiết hơn, hãy xem hướng dẫn về hành vi TF1.x và TF2 để tìm hiểu về các thay đổi hành vi khác và cách bạn có thể thích ứng với chúng . Ngoài ra, hãy xem cách tạo Lớp và Mô hình mới thông qua hướng dẫn phân lớp để biết chi tiết.

Xác thực kết quả của bạn

Xem hướng dẫn xác thực mô hình để biết các công cụ dễ dàng và hướng dẫn về cách bạn có thể xác thực (bằng số) rằng mô hình của bạn đang hoạt động chính xác khi bật tính năng thực thi háo hức. Bạn có thể thấy điều này đặc biệt hữu ích khi kết hợp với hướng dẫn lập bản đồ mô hình .

Nâng cấp đào tạo, đánh giá và mã xuất nhập khẩu

Các vòng đào tạo TF1.x được xây dựng bằng v1.Session -style tf.estimator.Estimator và các phương pháp tiếp cận dựa trên bộ sưu tập khác không tương thích với các hành vi mới của TF2. Điều quan trọng là bạn phải di chuyển tất cả mã đào tạo TF1.x của mình vì việc kết hợp nó với mã TF2 có thể gây ra các hành vi không mong muốn.

Bạn có thể chọn trong số một số chiến lược để làm điều này.

Cách tiếp cận cấp cao nhất là sử dụng tf.keras . Các hàm cấp cao trong Keras quản lý nhiều chi tiết cấp thấp có thể dễ bị bỏ sót nếu bạn viết vòng đào tạo của riêng mình. Ví dụ: chúng tự động thu thập các tổn thất chính quy hóa và đặt đối số training=True khi gọi mô hình.

Tham khảo hướng dẫn di chuyển Công cụ ước tính để tìm hiểu cách bạn có thể di chuyển mã của tf.estimator.Estimator để sử dụng vòng lặp đào tạo vanillatf.keras tùy chỉnh .

Các vòng đào tạo tùy chỉnh giúp bạn kiểm soát tốt hơn mô hình của mình, chẳng hạn như theo dõi trọng số của từng lớp. Đọc hướng dẫn về xây dựng vòng lặp đào tạo từ đầu để tìm hiểu cách sử dụng tf.GradientTape để truy xuất trọng số mô hình và sử dụng chúng để cập nhật mô hình.

Chuyển đổi trình tối ưu hóa TF1.x sang trình tối ưu hóa Keras

Các trình tối ưu hóa trong tf.compat.v1.train , chẳng hạn như trình tối ưu hóa Adamtrình tối ưu hóa giảm độ dốc , có các mức tương đương trong tf.keras.optimizers .

Bảng bên dưới tóm tắt cách bạn có thể chuyển đổi các trình tối ưu hóa cũ này sang các trình tối ưu hóa tương đương với Keras của chúng. Bạn có thể thay thế trực tiếp phiên bản TF1.x bằng phiên bản TF2 trừ khi cần thực hiện các bước bổ sung (chẳng hạn như cập nhật tốc độ học tập mặc định ).

Lưu ý rằng việc chuyển đổi trình tối ưu hóa của bạn có thể làm cho các điểm kiểm tra cũ không tương thích .

TF1.x TF2 Các bước bổ sung
`tf.v1.train.GradientDescentOptimizer` tf.keras.optimizers.SGD Không có
`tf.v1.train.MomentumOptimizer` tf.keras.optimizers.SGD Bao gồm đối số `động lượng`
`tf.v1.train.AdamOptimizer` tf.keras.optimizers.Adam Đổi tên các đối số `beta1` và `beta2` thành `beta_1` và `beta_2`
`tf.v1.train.RMSPropOptimizer` tf.keras.optimizers.RMSprop Đổi tên đối số `decay` thành `rho`
`tf.v1.train.AdadeltaOptimizer` tf.keras.optimizers.Adadelta Không có
`tf.v1.train.AdagradOptimizer` tf.keras.optimizers.Adagrad Không có
`tf.v1.train.FtrlOptimizer` tf.keras.optimizers.Ftrl Xóa đối số `accum_name` và `tuyến_name`
`tf.contrib.AdamaxOptimizer` tf.keras.optimizers.Adamax Đổi tên các đối số `beta1` và `beta2` thành `beta_1` và `beta_2`
`tf.contrib.Nadam` tf.keras.optimizers.Nadam Đổi tên các đối số `beta1` và `beta2` thành `beta_1` và `beta_2`

Nâng cấp đường ống đầu vào dữ liệu

Có nhiều cách để cung cấp dữ liệu cho mô hình tf.keras . Họ sẽ chấp nhận trình tạo Python và mảng Numpy làm đầu vào.

Cách được khuyến nghị để cung cấp dữ liệu cho một mô hình là sử dụng gói tf.data , gói này chứa một tập hợp các lớp hiệu suất cao để thao tác dữ liệu. dataset thuộc tf.data hiệu quả, biểu cảm và tích hợp tốt với TF2.

Chúng có thể được chuyển trực tiếp đến phương thức tf.keras.Model.fit .

model.fit(dataset, epochs=5)

Chúng có thể được lặp lại qua Python tiêu chuẩn trực tiếp:

for example_batch, label_batch in dataset:
    break

Nếu bạn vẫn đang sử dụng tf.queue thì những thứ này hiện chỉ được hỗ trợ dưới dạng cấu trúc dữ liệu chứ không phải dưới dạng đường dẫn đầu vào.

Bạn cũng nên di chuyển tất cả mã tiền xử lý tính năng sử dụng tf.feature_columns . Đọc hướng dẫn di chuyển để biết thêm chi tiết.

Lưu và tải mô hình

TF2 sử dụng các điểm kiểm tra dựa trên đối tượng. Đọc hướng dẫn di chuyển điểm kiểm tra để tìm hiểu thêm về cách di chuyển các điểm kiểm tra TF1.x dựa trên tên. Đồng thời đọc hướng dẫn về điểm kiểm tra trong tài liệu cốt lõi của TensorFlow.

Không có mối lo ngại đáng kể nào về khả năng tương thích đối với các mô hình đã lưu. Đọc hướng dẫn SavedModel để biết thêm thông tin về cách di chuyển SavedModel trong TF1.x sang TF2. Nói chung,

  • TF1.x save_models hoạt động trong TF2.
  • TF2 save_models hoạt động trong TF1.x nếu tất cả các hoạt động được hỗ trợ.

Đồng thời tham khảo phần GraphDef trong hướng dẫn di chuyển SavedModel để biết thêm thông tin về cách làm việc với các đối tượng Graph.pbGraph.pbtxt .

(Tùy chọn) Di chuyển các ký hiệu tf.compat.v1

Mô-đun tf.compat.v1 chứa API TF1.x hoàn chỉnh, với ngữ nghĩa ban đầu.

Ngay cả sau khi làm theo các bước ở trên và kết thúc bằng mã hoàn toàn tương thích với tất cả các hành vi của TF2, có thể có nhiều đề cập đến các api compat.v1 tương thích với TF2. Bạn nên tránh sử dụng các api compat.v1 cũ này cho bất kỳ mã mới nào mà bạn viết, mặc dù chúng sẽ tiếp tục hoạt động đối với mã đã viết của bạn.

Tuy nhiên, bạn có thể chọn di chuyển các cách sử dụng hiện có sang API TF2 không kế thừa. Chuỗi tài liệu của các ký hiệu compat.v1 riêng lẻ thường sẽ giải thích cách di chuyển chúng sang API TF2 không kế thừa. Ngoài ra, phần hướng dẫn ánh xạ mô hình về di chuyển gia tăng sang API TF2 thành ngữ cũng có thể trợ giúp vấn đề này.

Tài nguyên và đọc thêm

Như đã đề cập trước đây, cách tốt nhất là di chuyển tất cả mã TF1.x của bạn sang TF2. Đọc hướng dẫn trong phần Di chuyển sang TF2 của hướng dẫn TensorFlow để tìm hiểu thêm.

,

TensorFlow 2 về cơ bản khác với TF1.x ở một số điểm. Bạn vẫn có thể chạy mã TF1.x chưa sửa đổi ( ngoại trừ contrib ) đối với các cài đặt nhị phân TF2 như sau:

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

Tuy nhiên, điều này không chạy các hành vi và API của TF2 và có thể không hoạt động như mong đợi với mã được viết cho TF2. Nếu bạn không chạy với hành vi TF2 đang hoạt động, thì bạn đang chạy TF1.x một cách hiệu quả sau khi cài đặt TF2. Đọc hướng dẫn về hành vi TF1 và TF2 để biết thêm chi tiết về sự khác biệt giữa TF2 và TF1.x.

Hướng dẫn này cung cấp thông tin tổng quan về quy trình di chuyển mã TF1.x của bạn sang TF2. Điều này cho phép bạn tận dụng các cải tiến tính năng mới và trong tương lai, đồng thời làm cho mã của bạn đơn giản hơn, hiệu suất cao hơn và dễ bảo trì hơn.

Nếu bạn đang sử dụng các API cấp cao của tf.keras và đào tạo riêng với model.fit thì mã của bạn ít nhiều phải tương thích hoàn toàn với TF2 ngoại trừ những lưu ý sau:

Quá trình di chuyển TF2

Trước khi di chuyển, hãy tìm hiểu về sự khác biệt về hành vi và API giữa TF1.x và TF2 bằng cách đọc hướng dẫn .

  1. Chạy tập lệnh tự động để chuyển đổi một số cách sử dụng API TF1.x của bạn thành tf.compat.v1 .
  2. Xóa các ký hiệu tf.contrib cũ (kiểm tra TF AddonsTF-Slim ).
  3. Làm cho các lượt chuyển tiếp mô hình TF1.x của bạn chạy trong TF2 với tính năng thực thi háo hức được bật.
  4. Nâng cấp mã TF1.x của bạn cho các vòng đào tạo và lưu/tải mô hình lên tương đương TF2.
  5. (Tùy chọn) Di chuyển các API tf.compat.v1 tương thích TF2 của bạn sang các API TF2 đặc trưng.

Các phần sau đây mở rộng theo các bước được nêu ở trên.

Chạy tập lệnh chuyển đổi ký hiệu

Điều này thực thi bước đầu tiên khi viết lại các ký hiệu mã của bạn để chạy với các nhị phân TF 2.x, nhưng sẽ không làm cho mã của bạn trở nên đặc trưng với TF 2.x và cũng sẽ không tự động làm cho mã của bạn tương thích với các hành vi TF2.

Mã của bạn rất có thể vẫn sử dụng điểm cuối tf.compat.v1 để truy cập phần giữ chỗ, phiên, bộ sưu tập và chức năng kiểu TF1.x khác.

Đọc hướng dẫn để tìm hiểu thêm về các phương pháp hay nhất để sử dụng tập lệnh chuyển đổi ký hiệu.

Xóa việc sử dụng tf.contrib

Mô-đun tf.contrib đã ngừng hoạt động và một số mô-đun con của nó đã được tích hợp vào API TF2 cốt lõi. Các mô-đun con khác hiện được tách ra thành các dự án khác như TF IOTF Addons .

Một lượng lớn mã TF1.x cũ hơn sử dụng thư viện Slim , được đóng gói cùng với TF1.x dưới dạng tf.contrib.layers . Khi di chuyển mã Slim của bạn sang TF2, hãy chuyển cách sử dụng API Slim của bạn để trỏ đến gói tf-slim pip . Sau đó, đọc hướng dẫn lập bản đồ mô hình để tìm hiểu cách chuyển đổi mã Slim.

Ngoài ra, nếu bạn sử dụng các mô hình được đào tạo trước của Slim, bạn có thể cân nhắc dùng thử các mô hình được huấn luyện trước của Keras từ tf.keras.applications hoặc TF2 SavedModel của TF Hub được xuất từ ​​mã Slim ban đầu.

Làm cho các lượt chuyển tiếp mô hình TF1.x chạy khi bật các hành vi TF2

Theo dõi các biến số và tổn thất

TF2 không hỗ trợ các bộ sưu tập toàn cầu.

Việc thực thi háo hức trong TF2 không hỗ trợ các API dựa trên bộ sưu tập tf.Graph . Điều này ảnh hưởng đến cách bạn xây dựng và theo dõi các biến.

Đối với mã TF2 mới, bạn sẽ sử dụng tf.Variable thay vì v1.get_variable và sử dụng các đối tượng Python để thu thập và theo dõi các biến thay vì tf.compat.v1.variable_scope . Thông thường đây sẽ là một trong:

Danh sách tổng hợp các biến (như tf.Graph.get_collection(tf.GraphKeys.VARIABLES) ) với các thuộc tính .variables.trainable_variables của các đối tượng Layer , Module hoặc Model .

Các lớp LayerModel triển khai một số thuộc tính khác giúp loại bỏ nhu cầu về các bộ sưu tập chung. Thuộc .losses của chúng có thể thay thế cho việc sử dụng bộ sưu tập tf.GraphKeys.LOSSES .

Đọc hướng dẫn ánh xạ mô hình để tìm hiểu thêm về cách sử dụng miếng chêm mô hình hóa mã TF2 để nhúng mã dựa trên get_variablevariable_scope hiện có của bạn bên trong Layers , ModelsModules . Điều này sẽ cho phép bạn thực hiện chuyển tiếp với tính năng thực thi mong muốn được kích hoạt mà không cần phải viết lại nhiều.

Thích ứng với những thay đổi hành vi khác

Nếu bản thân hướng dẫn ánh xạ mô hình không đủ để giúp mô hình của bạn chuyển tiếp chạy các thay đổi hành vi khác có thể chi tiết hơn, hãy xem hướng dẫn về hành vi TF1.x và TF2 để tìm hiểu về các thay đổi hành vi khác và cách bạn có thể thích ứng với chúng . Ngoài ra, hãy xem cách tạo Lớp và Mô hình mới thông qua hướng dẫn phân lớp để biết chi tiết.

Xác thực kết quả của bạn

Xem hướng dẫn xác thực mô hình để biết các công cụ dễ dàng và hướng dẫn về cách bạn có thể xác thực (bằng số) rằng mô hình của bạn đang hoạt động chính xác khi bật tính năng thực thi háo hức. Bạn có thể thấy điều này đặc biệt hữu ích khi kết hợp với hướng dẫn lập bản đồ mô hình .

Nâng cấp đào tạo, đánh giá và mã xuất nhập khẩu

Các vòng đào tạo TF1.x được xây dựng bằng v1.Session -style tf.estimator.Estimator và các phương pháp tiếp cận dựa trên bộ sưu tập khác không tương thích với các hành vi mới của TF2. Điều quan trọng là bạn phải di chuyển tất cả mã đào tạo TF1.x của mình vì việc kết hợp nó với mã TF2 có thể gây ra các hành vi không mong muốn.

Bạn có thể chọn trong số một số chiến lược để làm điều này.

Cách tiếp cận cấp cao nhất là sử dụng tf.keras . Các hàm cấp cao trong Keras quản lý nhiều chi tiết cấp thấp có thể dễ bị bỏ sót nếu bạn viết vòng đào tạo của riêng mình. Ví dụ: chúng tự động thu thập các tổn thất chính quy hóa và đặt đối số training=True khi gọi mô hình.

Tham khảo hướng dẫn di chuyển Công cụ ước tính để tìm hiểu cách bạn có thể di chuyển mã của tf.estimator.Estimator để sử dụng vòng lặp đào tạo vanillatf.keras tùy chỉnh .

Các vòng đào tạo tùy chỉnh giúp bạn kiểm soát tốt hơn mô hình của mình, chẳng hạn như theo dõi trọng số của từng lớp. Đọc hướng dẫn về xây dựng vòng lặp đào tạo từ đầu để tìm hiểu cách sử dụng tf.GradientTape để truy xuất trọng số mô hình và sử dụng chúng để cập nhật mô hình.

Chuyển đổi trình tối ưu hóa TF1.x sang trình tối ưu hóa Keras

Các trình tối ưu hóa trong tf.compat.v1.train , chẳng hạn như trình tối ưu hóa Adamtrình tối ưu hóa giảm độ dốc , có các mức tương đương trong tf.keras.optimizers .

Bảng bên dưới tóm tắt cách bạn có thể chuyển đổi các trình tối ưu hóa cũ này sang các trình tối ưu hóa tương đương với Keras của chúng. Bạn có thể thay thế trực tiếp phiên bản TF1.x bằng phiên bản TF2 trừ khi cần thực hiện các bước bổ sung (chẳng hạn như cập nhật tốc độ học tập mặc định ).

Lưu ý rằng việc chuyển đổi trình tối ưu hóa của bạn có thể làm cho các điểm kiểm tra cũ không tương thích .

TF1.x TF2 Các bước bổ sung
`tf.v1.train.GradientDescentOptimizer` tf.keras.optimizers.SGD Không có
`tf.v1.train.MomentumOptimizer` tf.keras.optimizers.SGD Bao gồm đối số `động lượng`
`tf.v1.train.AdamOptimizer` tf.keras.optimizers.Adam Đổi tên các đối số `beta1` và `beta2` thành `beta_1` và `beta_2`
`tf.v1.train.RMSPropOptimizer` tf.keras.optimizers.RMSprop Đổi tên đối số `decay` thành `rho`
`tf.v1.train.AdadeltaOptimizer` tf.keras.optimizers.Adadelta Không có
`tf.v1.train.AdagradOptimizer` tf.keras.optimizers.Adagrad Không có
`tf.v1.train.FtrlOptimizer` tf.keras.optimizers.Ftrl Xóa đối số `accum_name` và `tuyến_name`
`tf.contrib.AdamaxOptimizer` tf.keras.optimizers.Adamax Đổi tên các đối số `beta1` và `beta2` thành `beta_1` và `beta_2`
`tf.contrib.Nadam` tf.keras.optimizers.Nadam Đổi tên các đối số `beta1` và `beta2` thành `beta_1` và `beta_2`

Nâng cấp đường ống đầu vào dữ liệu

Có nhiều cách để cung cấp dữ liệu cho mô hình tf.keras . Họ sẽ chấp nhận trình tạo Python và mảng Numpy làm đầu vào.

Cách được khuyến nghị để cung cấp dữ liệu cho một mô hình là sử dụng gói tf.data , gói này chứa một tập hợp các lớp hiệu suất cao để thao tác dữ liệu. dataset thuộc tf.data hiệu quả, biểu cảm và tích hợp tốt với TF2.

Chúng có thể được chuyển trực tiếp đến phương thức tf.keras.Model.fit .

model.fit(dataset, epochs=5)

Chúng có thể được lặp lại qua Python tiêu chuẩn trực tiếp:

for example_batch, label_batch in dataset:
    break

Nếu bạn vẫn đang sử dụng tf.queue thì những thứ này hiện chỉ được hỗ trợ dưới dạng cấu trúc dữ liệu chứ không phải dưới dạng đường dẫn đầu vào.

Bạn cũng nên di chuyển tất cả mã tiền xử lý tính năng sử dụng tf.feature_columns . Đọc hướng dẫn di chuyển để biết thêm chi tiết.

Lưu và tải mô hình

TF2 sử dụng các điểm kiểm tra dựa trên đối tượng. Đọc hướng dẫn di chuyển điểm kiểm tra để tìm hiểu thêm về cách di chuyển các điểm kiểm tra TF1.x dựa trên tên. Đồng thời đọc hướng dẫn về điểm kiểm tra trong tài liệu cốt lõi của TensorFlow.

Không có mối lo ngại đáng kể nào về khả năng tương thích đối với các mô hình đã lưu. Đọc hướng dẫn SavedModel để biết thêm thông tin về cách di chuyển SavedModel trong TF1.x sang TF2. Nói chung,

  • TF1.x save_models hoạt động trong TF2.
  • TF2 save_models hoạt động trong TF1.x nếu tất cả các hoạt động được hỗ trợ.

Đồng thời tham khảo phần GraphDef trong hướng dẫn di chuyển SavedModel để biết thêm thông tin về cách làm việc với các đối tượng Graph.pbGraph.pbtxt .

(Tùy chọn) Di chuyển các ký hiệu tf.compat.v1

Mô-đun tf.compat.v1 chứa API TF1.x hoàn chỉnh, với ngữ nghĩa ban đầu.

Ngay cả sau khi làm theo các bước ở trên và kết thúc bằng mã hoàn toàn tương thích với tất cả các hành vi của TF2, có thể có nhiều đề cập đến các api compat.v1 tương thích với TF2. Bạn nên tránh sử dụng các api compat.v1 cũ này cho bất kỳ mã mới nào mà bạn viết, mặc dù chúng sẽ tiếp tục hoạt động đối với mã đã viết của bạn.

Tuy nhiên, bạn có thể chọn di chuyển các cách sử dụng hiện có sang API TF2 không cũ. Chuỗi tài liệu của các ký hiệu compat.v1 riêng lẻ thường sẽ giải thích cách di chuyển chúng sang API TF2 không kế thừa. Ngoài ra, phần hướng dẫn ánh xạ mô hình về di chuyển gia tăng sang API TF2 thành ngữ cũng có thể trợ giúp vấn đề này.

Tài nguyên và đọc thêm

Như đã đề cập trước đây, cách tốt nhất là di chuyển tất cả mã TF1.x của bạn sang TF2. Đọc hướng dẫn trong phần Di chuyển sang TF2 của hướng dẫn TensorFlow để tìm hiểu thêm.