TensorFlow里,shape=(?, 120)里的问号是怎么回事呢

TensorFlow里,shape=(?, 120)里的问号是怎么回事呢

 
 

125 self.cos_sim (1024, 51) Tensor("cosine-imilarity-layer/mul_2:0", shape=(1024, 51), dtype=float32)

126 type(self.query_batch): <class 'tensorflow.python.framework.sparse_tensor.SparseTensor'>

127 type(self.doc_batch): <class 'tensorflow.python.framework.sparse_tensor.SparseTensor'>

128 weight_wh:  <tf.Variable 'model-init/layer-wh-weight:0' shape=(4244, 400) dtype=float32_ref>

129 bias_wh:  <tf.Variable 'model-init/layer-wh-bias:0' shape=(400,) dtype=float32_ref>

130 self.doc_act_fd:  Tensor("fd-rotate/concat_49:0", shape=(?, 120), dtype=float32)

131 doc_y:  Tensor("multi-layer/Elu_3:0", shape=(?, 120), dtype=float32)

132 query_y:  Tensor("multi-layer/Elu_2:0", shape=(?, 120), dtype=float32)

133 query_norm:  Tensor("cosine-imilarity-layer/Tile:0", shape=(?, 1), dtype=float32)

134 doc_norm:  Tensor("cosine-imilarity-layer/Sqrt_1:0", shape=(?, 1), dtype=float32)

135 prod:  Tensor("cosine-imilarity-layer/Sum_2:0", shape=(?, 1), dtype=float32)

136 norm_prod:  Tensor("cosine-imilarity-layer/Mul_1:0", shape=(?, 1), dtype=float32)

137 cos_sim:  Tensor("cosine-imilarity-layer/mul_2:0", shape=(1024, 51), dtype=float32)

138 softmax_prob:  Tensor("loss/Softmax:0", shape=(1024, 51), dtype=float32)

139 hit_prob:  Tensor("loss/Slice:0", shape=(1024, 1), dtype=float32)

 

Python Python的自由天空
© 著作权归作者所有
 
 
3 个回复
dd50ee8440783b76da3aee3fa5be15ad?w=36&h=36&uploading.4e448015.gif转存失败重新上传取消 
ilovecpp
cpp 2019-03-17

它这个类自己定义的__str__,和Python语言本身语法没关系。

具体到tf里的意思是这个维度不规定,由它上下游op的维度推导出来。

 

【 在 legendjack 的大作中提到: 】

: 125 self.cos_sim (1024, 51) Tensor("cosine-imilarity-layer/mul_2:0", shape=(1024, 51), dtype=float32)

: 126 type(self.query_batch): <class 'tensorflow.python.framework.sparse_tensor.SparseTensor'>

: 127 type(self.doc_batch): <class 'tensorflow.python.framework.sparse_tensor.SparseTensor'>

: ...................

 

 加好友  回复
dd50ee8440783b76da3aee3fa5be15ad?w=36&h=36&uploading.4e448015.gif转存失败重新上传取消 
legendjack
legendjack 2019-03-17

但是我都给他喂数据了,为啥还是?

 

【 在 ilovecpp 的大作中提到: 】

: 它这个类自己定义的__str__,和Python语言本身语法没关系。

: 具体到tf里的意思是这个维度不规定,由它上下游op的维度推导出来。

 

 加好友  回复
dd50ee8440783b76da3aee3fa5be15ad?w=36&h=36&uploading.4e448015.gif转存失败重新上传取消 
xenophobe
控制龟 2019-03-18

那是个通用标志,tf哪知道你每次给的batch size之类的是不是固定值

<think>好的,用户现在的问题是询问在设置`checkpoint_path = "RetinexNet-tensorflow"`之前需要做什么。之前已经解答过如何正确加载检查点文件,但用户可能还有更深层次的需求需要理解。我需要分析用户可能的疑问,比如文件路径的设置、检查点文件的生成过程、环境配置,或者如何确保文件存在等。 首先,用户可能不太清楚文件路径的具体含义,或者不知道如何正确指向他们的模型文件。他们可能在运行代码时遇到了文件找不到的错误,或者在加载模型时出现了问题。此外,用户可能想知道如何生成这些检查点文件,或者是否需要其他前置步骤。 接下来,我需要考虑用户的环境是否配置正确。例如,TensorFlow版本是否兼容,文件是否在正确的目录下,或者是否有权限问题。用户可能没有意识到不同TensorFlow版本之间的差异,尤其是TF1.x和TF2.x在处理检查点时的不同。 另外,用户提到的文件结构(如.data-00000-of-00001、.index、checkpoint)可能让他们感到困惑,不清楚这些文件的作用和如何正确引用。需要解释这些文件的作用,以及为什么只需要指定基础路径即可。 然后,我需要确保回答覆盖了所有可能的前置步骤,包括文件保存过程、路径设置、版本兼容性检查、文件存在性验证等。用户可能在保存模型时没有正确使用`tf.train.Saver`或TF2.x的API,导致生成的文件不符合预期。 同时,用户可能对如何生成这些检查点文件感兴趣,所以需要简要说明保存模型的步骤,这样他们可以确认自己是否正确保存了模型。此外,可能还需要提醒用户注意文件路径的绝对路径和相对路径问题,尤其是在不同环境下运行时路径是否正确。 最后,用户可能需要一些验证步骤,比如如何检查文件是否存在,如何列出所有变量来确认模型是否正确加载。这些步骤可以帮助用户自行排查问题,确保他们的代码能够正确运行。需要给出具体的代码示例和命令行建议,帮助用户一步步验证他们的设置是否正确。</think>以下是使用TensorFlow检查点文件前的完整配置流程说明,采用分步解析结构: $$\textbf{检查点文件操作全流程}$$ 1. $\text{模型保存阶段}$ ```python # 创建Saver对象(TF1.x方式) saver = tf.train.Saver(max_to_keep=3) with tf.Session() as sess: # 训练过程... # 保存时自动生成三个文件 save_path = saver.save(sess, "RetinexNet-tensorflow") # 输出示例:RetinexNet-tensorflow.data-00000-of-00001等 ``` 2. $\text{文件结构验证}$(在终端执行) ```bash ls -lh RetinexNet-tensorflow.* # 应显示: # - RetinexNet-tensorflow.data-00000-of-00001 # - RetinexNet-tensorflow.index # - RetinexNet-tensorflow.meta (仅TF1.x) ``` 3. $\text{路径设置原理}$ ```python # 基础路径规则: checkpoint_path = "实际路径/文件名前缀" # 示例解析: # 存在文件: # /models/RetinexNet-tensorflow.data-00000-of-00001 # /models/RetinexNet-tensorflow.index # 应设置为: checkpoint_path = "/models/RetinexNet-tensorflow" ``` $$\textbf{关键配置要素表}$$ | 要素 | 要求 | 验证方法 | |-----------------|-------------------------------|------------------------------| | 文件完整性 | 必须同时存在.data和.index文件 | `os.path.exists()`检查 | | 路径权限 | 当前用户有读取权限 | `ls -l`查看文件权限 | | TensorFlow版本 | 建议1.x;2.x需兼容模式 | `print(tf.__version__)` | | 变量命名匹配 | 与模型定义一致 | 使用`list_variables()`输出 | $$\textbf{增强型代码模板}$$ ```python import tensorflow as tf import os # 步骤1:动态路径设置 model_dir = "./saved_models" base_name = "RetinexNet-tensorflow" checkpoint_path = os.path.join(model_dir, base_name) # 步骤2:完整性检查 required_files = [ checkpoint_path + ".index", checkpoint_path + ".data-00000-of-00001" ] for f in required_files: if not os.path.exists(f): raise FileNotFoundError(f"缺失关键文件:{f}") # 步骤3:创建阅读器(兼容TF2.x) if tf.__version__.startswith('2'): tf = tf.compat.v1 tf.disable_eager_execution() try: reader = tf.train.NewCheckpointReader(checkpoint_path) all_vars = reader.get_variable_to_shape_map() # 输出筛选结果 target_vars = [name for name in all_vars if "bn1_0" in name] print(f"找到{len(target_vars)}个目标变量:") for var in target_vars: print(f"• {var}: {all_vars[var]}") except Exception as e: print(f"加载失败,原因:{str(e)}") print("建议检查:") print("- 使用tf.train.load_checkpoint()替代方案") print("- 尝试重新生成检查点文件") ``` $$\textbf{常见问题解决方案}$$ 1. $\text{文件路径错误}$ ```python # 转换为绝对路径 import pathlib checkpoint_path = str(pathlib.Path("relative/path").resolve()) ``` 2. $\text{TF2.x特有处理}$ ```python # 使用V2兼容API vars_list = tf.train.list_variables(checkpoint_path) loaded_tensor = tf.train.load_variable(checkpoint_path, "bn1_0/gamma") ``` 3. $\text{多GPU模型处理}$ ```python # 过滤设备编号 clean_vars = {name.replace("/device:GPU:0", ""): shape for name, shape in all_vars.items()} ``` 建议通过官方工具验证检查点完整性: ```bash python -m tensorflow.python.tools.inspect_checkpoint --file_name=RetinexNet-tensorflow --tensor_name=bn1_0/gamma ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值