[LAB 04 · CLIP:候选、提示与关系检验](/course/notebooks/0ba963931ddf4866b507b210d93a43bf.html) # 先做一个无需模型的关系检验 · 实现代码 [独立阅读](/course/notebook-blocks/b5078a7304e54d9fa89ee186821582fb.html) 主线阅读与优先实验 真实CLIP输入/权重/分数、候选改动、四条件规则与独立关系推理 展开完整实现代码 ``` # 每次整册运行使用临时工作目录,保留项目旧文件与历史结果。 import os, tempfile L03_RUN_DIR=tempfile.mkdtemp(prefix="lecture03-lab04-") os.chdir(L03_RUN_DIR) # 可独立运行;无需前面任何模型、文件或隐藏变量。 # 改 holder 为 left/right,先预测,再看两条规则是否仍然一致。 conditions = [ {'condition': 1, 'left': 'red', 'right': 'blue', 'holder': 'left'}, {'condition': 2, 'left': 'blue', 'right': 'red', 'holder': 'left'}, {'condition': 3, 'left': 'red', 'right': 'blue', 'holder': 'right'}, {'condition': 4, 'left': 'blue', 'right': 'red', 'holder': 'right'}, ] def choice_for_color(color): return {'red': 'A', 'blue': 'B'}[color] def compare_rules(case): relation = choice_for_color(case[case['holder']]) position = choice_for_color(case['left']) return relation, position assert compare_rules({'left':'red','right':'blue','holder':'right'}) == ('B','A') print('条件 | 持球关系规则 | 左侧颜色规则 | 两者不同') for case in conditions: relation, position = compare_rules(case) print(case['condition'], relation, position, relation != position) ```