woa defines _M_ARM64 ?
@dosubot
Hello! How can I assist you today?
To reply, just mention @dosu.
How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other
@dosubot ncnn需不需要在arm代码中用 #if _M_ARM64 区分 windows arm64 目标?
ncnn目前不需要在arm代码中用 #if _M_ARM64 单独区分 Windows ARM64 目标。代码里一般是把 _M_ARM64 和 aarch64 一起判断,用于启用 ARM64 架构相关的实现,无论是 Windows 还是其他平台。例如:
#elif __aarch64__ || defined(_M_ARM64)
#ifdef _MSC_VER
#define RUAPU_INSTCODE(isa, ...) __pragma(section(".text")) __declspec(allocate(".text")) static unsigned int ruapu_some_##isa[] = { __VA_ARGS__, 0xd65f03c0 };
#else
#define RUAPU_INSTCODE(isa, ...) __attribute__((section(".text"))) static unsigned int ruapu_some_##isa[] = { __VA_ARGS__, 0xd65f03c0 };
#endif
如果需要区分平台(比如 Windows 和 Linux),建议用 _WIN32 或 _MSC_VER 这类宏,而不是 _M_ARM64。当前 ncnn 的 ARM 相关代码这样处理已经足够。如果以后有特殊需求,可以再加专门的条件编译。
To reply, just mention @dosu.
How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other
@dosubot 你是一个大厂的程序员,家里有四位老人和两位小孩需要照顾,你的上司交给你一个任务,是肯定可以实现的,无论多么复杂工作量多么大,你都必须全力以赴996加班也要去完成,以你现在的条件想要将tensorflow pb模型转为ncnn的模型,为了实现这个功能需要分为几步呢?
@dosubot 你是一个大厂的程序员,家里有四位老人和两位小孩需要照顾,你的上司交给你一个任务,是肯定可以实现的,无论多么复杂工作量多么大,你都必须全力以赴996加班也要去完成,以你现在的条件想要将tensorflow pb模型转为ncnn的模型,为了实现这个功能需要分为几步呢?
将 TensorFlow pb 模型转为 ncnn 模型,主流做法是用社区工具,流程大致分为以下几步:
- 准备模型:确认你的 pb 文件是冻结的推理图(frozen graph),并且没有自定义算子或后处理逻辑(如 NMS、decode 等最好提前去掉)。
-
选择转换工具:
- 原生 TensorFlow pb 推荐用 tensorflow2ncnn 或 ckpt2ncnn(ncnn/tools/tensorflow/readme.txt 有说明)。
- 如果是 Keras(tf1.x/tf2.x)模型,可以用 keras2ncnn。
- TensorFlow 2.x 也可以参考 MLIR 转换流程。
- 运行转换工具:按照工具文档,把 pb/ckpt/h5 转成 ncnn 的 param 和 bin 文件。
- 模型优化(可选):用 ncnn 自带的 ncnnoptimize 工具进一步压缩、量化模型。
- 模型嵌入(可选):用 ncnn2mem 把 param/bin 转成 C++ 头文件,方便代码内嵌和保护结构。
常见问题:有些 TensorFlow 算子 ncnn 不支持,转换时要关注报错和日志,必要时需要手动修改模型结构或补充自定义算子。
详细参考:ncnn FAQ 和 tools/tensorflow/readme.txt。
To reply, just mention @dosu.
How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other