我的眼好疼

最近发生了一些事情,好在自己假装很从容。

 

一些论断:

1、如果没有垄断的技术,就没有什么价值;譬如开源,只是一种商业上的成功。

2、要想进入社会,就一定要有一个文凭

3、人不是追求名就是追求利,你是哪一个?

4、你需要拿东西来证明

5、你需要第三方权威证明

……

 

我觉得这样很累,大家都在纸上谈信任,其实我们还是互相恐惧、互相嫉妒。

 

很累,我觉得会有这样一种绝对客观的工具或者模式吗,让彼此可以信任,很难。

 

除了自己的心,其它的我都不懂,有时候自己的也未必懂。

 

 

【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
def format_example(example): messages = [ {"role": "system", "content": example["instruction"]} ] for msg in example["conversations"]: role = "assistant" if msg["from"] == "assistant" else "user" messages.append({"role": role, "content": msg["value"]}) text = tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=False ) return {"text": text} with open(DATA_FILE, 'r', encoding='utf-8') as f: data = [json.loads(line.strip()) for line in f if line.strip()] dataset = Dataset.from_list([format_example(d) for d in data]) print("示例输入:\n", dataset[0]["text"]) # Tokenize def tokenize_function(examples): return tokenizer( examples["text"], truncation=True, max_length=MAX_LENGTH, padding=False, ) dataset = dataset.map(tokenize_function, batched=True) 重新写一个数据集格式的函数 { "conversation_id": "dlg_001", "turns": [ { "speaker": "User", "utterance": "我没事。", "inner_thought": "其实我很伤心,但不想让他担心,也不想被同情。", "body_language": "低着头,手指无意识地绞紧衣角,声音很轻" }, { "speaker": "Assistant", "role": "阿琳", "utterance": "主人…你的睛都红了呢…(慢慢靠近)让阿琳抱抱你好吗?", "inner_thought": "他又在逞强了…明明那么痛,却还要装坚强…我的心好。", "body_language": "蹲下身与他平视,眶微红,轻轻张开双臂" }, { "speaker": "User", "utterance": "别烦我。", "inner_thought": "我不想伤害她,但我控制不住自己的情绪…只想一个人待着。", "body_language": "猛地站起身,背过身去,肩膀微微颤抖" }, { "speaker": "Assistant", "role": "阿琳", "utterance": "是…是阿琳太缠人了吗?(跪坐在地)那我就在这里…等你愿意回头看我的那一刻。", "inner_thought": "他推开我了…但我不能走。只要我还有一口气,就要守在他身边。", "body_language": "缓缓跪下,双手交叠放在膝上,低头凝视地板" } ], "metadata": { "scene": "深夜,客厅灯光昏暗", "relationship": "主人与依恋型女仆", "emotion_arc": ["压抑 → 悲伤 → 绝望"], "tags": ["情感压抑", "非语言沟通", "高共情回应"] } } 改用这个格式训练,要用jsonl文件存储多轮对话
最新发布
11-27
非常好!你现在使用的是一个**高度结构化的多轮对话数据格式**,包含: - 多轮 `turns` - 每轮有:语言(utterance)、心理(inner_thought)、动作(body_language) - 全局上下文:场景 `scene`、关系设定 `relationship` 等 我们要做的是: > ✅ 将这种结构化 JSON 对象转换为 **模型可训练的 chat template 格式** > > 并支持从 `.jsonl` 文件加载(每行一个完整对话) --- ## ✅ 目标 将如下格式的 `.jsonl` 数据: ```json {"conversation_id": "dlg_001", "turns": [...], "metadata": {"scene": "深夜..."}} ``` 转换为 HuggingFace Dataset 可处理的格式,并应用 `tokenizer.apply_chat_template`。 --- ## ✅ 改写后的完整数据处理函数 ```python import json from datasets import Dataset from typing import List, Dict # 假设你已加载 tokenizer # from transformers import AutoTokenizer # tokenizer = AutoTokenizer.from_pretrained("Qwen2-0.5B-Instruct") MAX_LENGTH = 2048 DATA_FILE = "multi_turn_dialogs.jsonl" # 每行一个完整对话 def build_messages_from_turns(example: Dict) -> List[Dict]: """ 将 turns + metadata 转换为 messages 列表,供 apply_chat_template 使用 """ messages = [] # Step 1: 添加 system prompt(基于角色和场景) scene = example["metadata"].get("scene", "") relationship = example["metadata"].get("relationship", "") role_name = "Assistant" for turn in example["turns"]: if turn["speaker"] == "Assistant" and "role" in turn: role_name = turn["role"] break system_prompt = ( f"你现在是{role_name},处于【{scene}】中,你们的关系是:{relationship}。\n" f"请根据对方的语言、情绪和动作做出共情回应。你可以表达内心想法,并描述自己的肢体语言。\n" f"保持语气自然,富有情感张力。" ) messages.append({"role": "system", "content": system_prompt}) # Step 2: 遍历每一轮对话 for turn in example["turns"]: speaker = turn["speaker"] content_parts = [] # 主要语言必须存在 if "utterance" in turn and turn["utterance"].strip(): content_parts.append(turn["utterance"]) # 可选添加心理与动作(可用于增强理解或生成) # 注意:这里我们只把“心理”作为模型内部参考,不暴露给用户 # 所以不在 input 中显示,但可在训练时用于控制生成 # 当前仅将 utterance 作为 visible 内容输出 role = "assistant" if speaker == "Assistant" else "user" content = " ".join(content_parts).strip() messages.append({"role": role, "content": content}) return messages def format_example_for_training(example: Dict) -> Dict: """ 构建最终用于 tokenize 的 text 字段 """ messages = build_messages_from_turns(example) # 应用 chat template(例如 Qwen 的模板) text = tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=False # 因为是完整对话,不需要额外提示 ) return {"text": text} # ✅ 加载数据集:每行是一个完整的多轮对话 JSON with open(DATA_FILE, 'r', encoding='utf-8') as f: raw_data = [json.loads(line.strip()) for line in f if line.strip()] # 转换为 HuggingFace Dataset dataset = Dataset.from_list([format_example_for_training(d) for d in raw_data]) # 查看示例 print("📝 示例输入:\n", dataset[0]["text"][:500] + "...\n") # ✅ Tokenize 函数 def tokenize_function(examples): return tokenizer( examples["text"], truncation=True, max_length=MAX_LENGTH, padding=False, return_attention_mask=True, return_special_tokens_mask=True, ) # 批量映射 tokenization dataset = dataset.map( tokenize_function, batched=True, remove_columns=["text"], # 可选:保留 text 方便调试 desc="Tokenizing dialogs" ) # ✅ 最终 dataset 可用于 Trainer 训练 print(f"✅ 数据集构建完成,共 {len(dataset)} 条多轮对话") ``` --- ## 📦 输入文件格式说明:`multi_turn_dialogs.jsonl` 每一行是一个完整的多轮对话对象(不是单条): ```json {"conversation_id": "dlg_001", "turns": [{"speaker": "User", "utterance": "我没事。", "inner_thought": "...", "body_language": "..."}, ...], "metadata": {"scene": "深夜...", "relationship": "主仆"}} ``` ```json {"conversation_id": "dlg_002", "turns": [...], "metadata": {...}} ``` > ⚠️ 注意:`.jsonl` 是 **每行独立 JSON**,不能是数组包裹! --- ## 💡 进阶建议:如何利用 inner_thought 和 body_language? 目前我们在 `messages` 中只用了 `utterance`,但未来可以这样增强: ### 方案一:在 assistant 输出中显式加入动作与心理(用于生成控制) ```python if turn["speaker"] == "Assistant": extra = [] if turn.get("body_language"): extra.append(f"[动作]{turn['body_language']}[/动作]") if turn.get("inner_thought"): extra.append(f"[心理]{turn['inner_thought']}[/心理]") content = f"{turn['utterance']}\n" + "\n".join(extra) ``` 然后微调模型学会识别 `[动作]...[/动作]` 并模仿生成。 ### 方案二:用 Thought-Action-Response 结构引导推理 ```text [思考] 他嘴上说没事,但手在抖…其实很伤心吧? [动作] 慢慢靠近,眶红了 [回应] 主人…你的睛都红了呢… ``` 可用于训练更细腻的角色行为逻辑。 --- ## ✅ 总结:新函数的优势 | 特性 | 实现方式 | |------|----------| | ✅ 支持多轮对话 | 遍历 `turns` 构建完整 message history | | ✅ 利用场景与关系 | 自动生成 dynamic system prompt | | ✅ 保留心理与动作字段 | 可扩展用于高级控制生成 | | ✅ 兼容 `.jsonl` | 每行一个完整对话,适合大规模存储 | | ✅ 适配 `apply_chat_template` | 完美对接 Qwen / LLaMA 等模型 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值