---
title: 系统约束与限制
description: "- 该文档仅配套TensorFlow 2.6.5版本使用。"
url: https://www.hiascend.com/document/detail/zh/TensorFlowCommercial/latest/migration/tfmigr2/tfmigr2_000004.html
sourcePath: /source/zh/TensorFlowCommercial/900/migration/tfmigr2/tfmigr2_000004.html
indexId: f5566a4601349458de8486a935c0625ca4fbdab9271c7d20383b28963c2ed08573
---
# 系统约束与限制

- 该文档仅配套TensorFlow 2.6.5版本使用。
- 当前版本不支持float64/complex64/complex128/DT_VARIANT数据类型。
- 只支持变量（tf.Variable）资源相关操作在NPU执行。
- 只支持tf.function修饰的函数算子在NPU执行。
- 不支持训练脚本中同时使用tf.compat.v1接口和TF 2.6.5中Eager功能相关的API。
- TensorFlow 2.6.5数据预处理过程默认在Host上执行，而变量需要下沉到Device上初始化。因此若数据预处理脚本中包含了变量，可能会在NPU上执行失败。为了解决此问题，应将包含变量的数据预处理代码嵌套在context.device('CPU:0')中，确保预处理代码中的变量在Host上初始化。
  1 2 3 4 5 6 import tensorflow as tf from tensorflow.python.eager import context with context.device('cpu:0'): # 此处写数据预处理代码，以下仅为示例 x = tf.Variable([1, 2, 3]) y = tf.square(x)

- 如果使用Python的多进程包multiprocessing创建多进程，请不要使用fork方法，建议使用forkserver方法。
  因为在Python3.8~Python3.11版本中如果使用fork方法，在创建子进程时可能会复制主进程的锁状态，而在子进程里再触发获取锁时，就会导致死锁，进而导致业务进程卡死。
