生成npy文件名异常情况批量处理
TensorFlow模型生成dump数据时,因tfdbg自身原因或运行环境原因,会出现tfdbg截断算子名,导致生成的npy文件名与预期不符,造成转换dump数据文件异常。
需要参考以下方法重新生成npy文件,使得npy文件名符合精度比对要求。

- 本文中脚本名称、路径等均为举例,请根据实际替换。
- 批量处理后,如果遇到某算子的dump文件存在,但是比对结果为NaN,需要检查该算子的dump文件名中的{op_name}是否与TensorFlow算子名称一致,如果不一致需要手动修改dump文件名中的算子字段与TensorFlow算子名称一致。其中如果出现"/"请修改为"_"。
- 执行TensorFlow工程。
进入调试命令行交互模式后,输入run命令。
- 执行lt > tensor_name命令将所有tensor的名称暂存到文件里。
- 创建可执行脚本,如pt_cmd.sh,获取tensor_name文件中tensor_name对应的tensor_index。
脚本内容如下:
#!/bin/bash timestamp=$[$(date +%s%N)/1000] index=1 while read -r line do tensor_index=`echo $line | awk '{print $4}'` echo "pt "$tensor_index" -n 0 -w "$((index++))"."$timestamp".npy" >> $2 done < $1
赋予pt_cmd.sh可执行权限并执行脚本。
bash pt_cmd.sh tensor_name tensor_name.txt
- 回到tfdbg命令行,输入run命令后,将上一步生成的tensor_name.txt文件内容粘贴执行,生成npy文件。
- 将生成的npy文件,移动到新的文件夹,如npy_dir。
- 创建可执行脚本,如index_to_tensorname.sh,并执行脚本批量修改npy文件名。
脚本内容如下:
#!/bin/bash timestamp=$[$(date +%s%N)/1000] while read -r line do tensor_index=`echo $line | awk '{print $2}'` real_file=`echo $line | awk '{print $6}'` changed1_tensor_index=${tensor_index//\//_} changed2_tensor_index=${changed1_tensor_index//:/.} echo $2/$real_file $2/$changed2_tensor_index"."$timestamp".npy" if [ -r $2/$real_file ] then mv $2/$real_file $2/$changed2_tensor_index"."$timestamp".npy" fi done < $1
赋予index_to_tensorname.sh可执行权限并执行脚本。
bash index_to_tensorname.sh tensor_name.txt npy_dir
父主题: 扩展功能