神经网络炼丹炸锅炉的血泪史:
1、segmentation fault
背景:作者在学习bert,去git下载了google的原始代码,数据集也是自带的CoLA。模型参数为:12层*768隐藏层*12。(无gpu,训练时间:6h)。为了保证xshell推出后不会kill进程,在运行指令后,加上 &
完整错误如下:
更重要的是前面信息:windows fatal exception: access violation,访问非法。后来发现,是export变量时候,路径没有设置正确(windows下的/\路径不大对劲,以及用于区分目录的\需要和运行时args约定好以保持一致,不要出现目录\\子目录的现象),因此训练时无法打开正确的文件/保存文件到正确目录,也就无法开始训练。
2、查看model.ckpt文件:
import tensorflow as tf
import pprint
newcheck = tf.train.NewCheckpointReader("model.ckpt-0")
print("Print Var")
# 打印所有变量名称
# pprint.pprint(newcheck.debug_string().decode("utf-8"))
print("tensor")
'''
打印tensor,这里的tensor应该是上面debug_string()输出的某个前缀。通过这行代码,可以将某变量参数全部出
'''
pprint.pprint(newcheck.get_tensor(
"bert/encoder/layer_9/intermediate/dense/bias"))
# 把变量输出其dtype类型
print("get_variable_to_dtype_map\n")
pprint.pprint(newcheck.get_variable_to_dtype_map())
print("get_variable_to_shape_map\n")
pprint.pprint(newcheck.get_variable_to_shape_map())
本处参考了:tensorflow的模型保存文件.ckpt包含什么以及如何读取、并将其转换为Keras的.h5文件_小C的博客-CSDN博客
3、