- 博客(82)
- 收藏
- 关注
原创 智能语音指令解析
第一步,在语音报销工单信息录入的场景下,模型的输入为报销工单相关的音频文件。可以根据设备类型,选取合适的录音软件来录制音频文件,保存格式应为``.wav``数据格式。若音频文件格式不符,可以调用脚本转换格式。第二步,然后在BaiduAI开放平台创建语音识别应用以获取API Key和Secret Key。其实就是构建个模型,能把声音数据转换成文本数据,之后用信息提取模型根据schema提取需要的信息。第三步,对上面提取的数据进行预处理,转换成prompt数据集,之后训练模型。
2024-08-16 16:33:03
121
原创 基于百度paddle检索系统的召回
所谓召回,无非就是用一段不规则文本模拟用户query查询,而要召回的是标准的title+key,这些是要构建索引库的,所有相似文本对的第二个文本必须要在索引库里存在,不然就没法评估,因为标记都是0,还有召回1,召回5等,并不是什么狗屁的查全率,说的子虚乌有的,更精确的是像图像分类中的top1,top5这样的,就是精确率,召回5就是5次召回有一次召回到,就设置标记为1,这其实就是top5精确率,依次类推,其他事top10,top20。但是准确率高,损失未必低,知道这意味 着啥吗?
2024-07-29 20:11:43
365
原创 文本分类动转静预测错误分析和挖掘稀疏数据和建立新数据集.ipynb
get_sparse_data(analysis_result, sparse_num)函数根据某种标准(如特征相似度评分的分布。def get_sparse_data(analysis_result, sparse_num): # 获取稀疏数据。# digits=4参数指定了在输出报告中保留的小数位数。# 基于analysis_result,使用get_sparse_data函数选择稀疏数据。# 返回三个主要元素:稀疏数据的索引(sparse_indexs)、稀疏度评分(sparse_scores)
2024-07-27 19:52:43
576
原创 诗歌模型训练transformer
在嵌入256后,这是嵌入512,就是一个token对应512维向量,这个向量就 表示了这个token的 各种信息。
2024-07-26 07:28:36
110
原创 中文诗歌生成
这是在500批次内训练的,我遵循从数据集的一部分到越来越大的训练方式。这是在1500个批次上训练,每个批次64个诗歌样本。用transformer在诗歌集上训练出的模型。上面是贪婪搜索,topk等搜索得到的生成结果。上面是各种生成方式的结果。
2024-07-21 23:37:57
196
原创 问百度文心一言 下三角矩阵
[1, 0, 0, 0, 0], [1, 1, 0, 0, 0], [1, 1, 1, 0, 0], [1, 1, 1, 1, 0], [1, 1, 1, 1, 1]] ,我把之前说的对齐,你看看是下三角不是,明明是下三角,定义上说,主对角线以上全是0,以下不全是0就是下三角。,因为主对角线上方的元素(在这个例子中,除了第二行第一列的元素外,其他都是零)可以是非零的(尽管在这个特定例子中,除了第二行第一列外,其他都是零),而主对角线下方的元素(在这个例子中,全部是非零的)也符合上三角矩阵的定义。
2024-07-19 17:08:18
1144
原创 基于语义的法律问答系统
第六步,构建前端用户访问页面,构建web处理用户访问请求,调用模型,返回语义向量,之后查询milvus库,返回json数据,html页面用jquery异步调用,无刷新访问。第五步,静态模型转serving,写webservice启动服务脚本,启动服务。第三步,构建dataloader,选择优化器训练模型,之后召回评估。第四步,模型动转静,之后用静态模型抽取索引库语义向量到milvus。第二步,构建索引数据集,问答对数据集,训练数据集,召回评估数据集。最后完成的法律问答系统界面如下。
2024-07-11 12:19:27
219
原创 使用现代 MLP 模型进行图像分类
im_part = keras.ops.zeros_like(inputs) #形状和inputs一样的全0数据。x = keras.ops.fft2((real_part, im_part))[0]#傅里叶变换,有实部和虚部。x = mlp1_outputs + inputs #感知机前后的数据做残差(b,p,h)x = x + x_ffn#残差连接可以让网络学习残差前后的差异,这里是感知机前后的差别。x_ffn = self.ffn(x)#前馈层,感知机。x = x + inputs#前后做残差。
2024-07-08 18:22:54
499
原创 Duee信息提取句子级预测结果后处理
t_ret = extract_result(d_json["text"], d_json["pred"]["labels"])#提取触发词位置,文本。role_ret[role_type].append("".join(r["text"]))#把提取的标签文本加进去。sent_role_mapping[d_json["id"]] = role_ret#句子id到角色论元对的映射。elif _type!role_data = read_by_lines(role_file)#读取句子论元角色预测。
2024-07-06 22:29:01
533
原创 duee句子级论元提取模型训练预测
loss_fn = paddle.nn.loss.CrossEntropyLoss(ignore_index=ignore_label)#对于-1标签值不计算损失。label_one = [id2label[pid] for pid in p_ids[1:seq_len - 1]]#转换索引为真实标签。#p_list:(50,27),是一个样本中各个token的预测概率,p_ids是模型预测的样本中各个token的标签索引。labels = labels[:(max_seq_len - 2)]#截断。
2024-07-06 20:48:08
879
原创 duee句子级触发词模型训练预测
loss_fn = paddle.nn.loss.CrossEntropyLoss(ignore_index=ignore_label)#对于-1标签值不计算损失。label_one = [id2label[pid] for pid in p_ids[1:seq_len - 1]]#转换索引为真实标签。#p_list:(50,27),是一个样本中各个token的预测概率,p_ids是模型预测的样本中各个token的标签索引。labels = labels[:(max_seq_len - 2)]#截断。
2024-07-06 20:18:51
551
原创 Duee1.0信息提取句子级数据预处理
start = event["trigger_start_index"]#触发词起始索引。start = arg["argument_start_index"]#论元起始。output = ["text_a"] if is_predict else ["text_a\tlabel"]#文本,标签。event_type = event["event_type"]#事件类型。suffix = "B-" if i == start else "I-" #前缀。labels = []#存放事件类型标签或角色标签。
2024-07-06 19:27:48
952
原创 duee篇章级预测结果后处理
doc_pred[d["id"]] = {"id": d["id"], "event_list": []}#没有就创建id到样本的映射字典。doc_pred[d["id"]]["event_list"].extend(d["event_list"])#这个会合并id相同的事件列表。arg_str = "{}-{}".format(arg["role"], arg["argument"])#角色论元组。label = d_json["pred"]["label"]#模型预测的类别。
2024-07-06 18:12:23
685
原创 duee篇章级enum分类模型训练预测
apply_decay_param_fun=lambda x: x in decay_params)#刨除"bias", "norm"logits = model(input_ids,token_type_ids)#模型预测置信度。probs_ids = paddle.argmax(probs, -1).numpy()#预测的标签索引。logits = model(input_ids, token_type_ids)# 分值。probs = F.softmax(logits, axis=-1)#概率。
2024-07-06 15:26:19
354
原创 duee篇章级论元抽取模型训练预测
metric = ChunkEvaluator(label_list=label_map.keys(),suffix=False)# 用于指定是否在某些输出或结果中添加后缀。loss_fn = paddle.nn.loss.CrossEntropyLoss(ignore_index=ignore_label)#对于-1标签值不计算损失。probs_ids = paddle.argmax(probs, -1).numpy()#预测的标签索引。#seq_len:某一个样本序列长度。
2024-07-06 12:43:33
455
原创 duee篇章级触发词模型训练预测
metric = ChunkEvaluator(label_list=label_map.keys(),suffix=True)# 用于指定是否在某些输出或结果中添加后缀。loss_fn = paddle.nn.loss.CrossEntropyLoss(ignore_index=ignore_label)#对于-1标签值不计算损失。label_one = [id2label[pid] for pid in p_ids[1:seq_len - 1]]#去除开始结束符号。
2024-07-06 06:29:37
451
原创 duee信息提取篇章级数据预处理
sent_mapping_event[cur_sent]["event_list"] = []#添加一个空的。if len(d_json.get("event_list", [])) == 0:#过滤掉没有event_list的。if len(d_json.get("event_list", [])) == 0:#过滤掉没有event_list的。if len(d_json.get("event_list", [])) == 0:#过滤掉没有event_list的。
2024-07-06 03:04:23
894
原创 msra_ner命名实体识别训练评估预测
apply_decay_param_fun=lambda x: x in decay_params)# 刨除 "bias", "norm"preds =paddle.argmax(logits,axis=-1)#模型预测标签索引。id2label = dict(enumerate(label_list))#转换list为dict。pred = paddle.argmax(logits, axis=-1)#预测的标签索引。", ".join(sum(a,[]))#列表内必须也是列表,才能sum。
2024-07-05 16:24:34
415
原创 保险问答系统提前特征,插入milvus
if not self.has_collection(collection_name):#没有集合就创建。if (len(examples) >= self.batch_size):#够一个批次就做下面的事。if (len(examples) > 0):#处理最后一个批次数据。if (partition_tag #没有分区就创建。all_embeddings = []#存放所有数据。examples = []#用来临时存放一个批次数据。
2024-07-04 04:26:57
955
原创 语义检索系统排序阶段使用PaddleInference进行模型推理
sim_score = output_handle.copy_to_cpu()#本来这个处理就是概率了。examples = []#保持每个样本的token和token_type,数字形式。if not is_test:#非测试,评估返回。else:#测试返回。
2024-07-03 20:58:55
475
原创 语义检索系统召回阶段in_batch_negative训练语义模型
, cls_embedding = self.ptm(input_ids, token_type_ids, position_ids,#池化输出。query_embedding = inner_model.get_semantic_embedding(query_data_loader)#查询向量。final_index = build_index(corpus_data_loader, inner_model)#构建索引库。yield text_embeddings#返回的事输入的向量表示(n,d)
2024-07-03 14:40:36
308
原创 抽取语料库索引语义向量并建milvus库
corpus_list_embed[j][:text_max_len - 1] for j in range(i, cur_end, 1)],#文本。x=[corpus_list_embed[j][:1000]for j in range(10000, 15000,1)]#[:200]文本切片操作。batch_emb = embeddings[np.arange(i, cur_end)]#一个批次的嵌入向量。[j for j in range(i, cur_end, 1)],#索引。
2024-07-02 23:03:34
737
原创 语义索引系统召回模块之模型动转静,静态模型推理
title_ids, title_segment_ids = convert_example({idx: text[1]}, tokenizer)#文本对的第二个文本,title。examples.append((input_ids, segment_ids))#用来添加每个样本数据(tokens,token_types)input_handles[1].copy_from_cpu(segment_ids)#1号处理token_types。predictor.run()#推理。
2024-07-02 16:33:44
699
原创 用召回模型预测查询文本向量和预测文本对语义相似度
axis=-1)#(相当于对应向量做内积),(n,1),又因为是单位向量,相当于向量夹角余弦值。cosine_sims = np.concatenate(cosine_sims, axis=0)#在样本轴合并。valid_ds = load_dataset(read_text_pair,#用方法读取文件为dataset。text_pairs=load_dataset(read_text_pair,#用方法读取文件为dataset。
2024-07-02 09:28:42
479
原创 语义索引系统召回阶段之召回模型训练评估
cls_embedding = F.normalize(cls_embedding, p=2, axis=-1)#语义向量单位化(n,d)cosine_sim = cosine_sim - paddle.diag(margin_diag)#余弦相似。text, similar_text = line.rstrip().split("\t")#文本,相似文本。if avg_loss < best_loss:#avg_loss< best_loss才会更新保存模型。#(n,1),余弦相似。
2024-07-02 08:01:19
298
原创 语义索引系统排序模型之训练评估预测
, pos_cls_embedding = self.ptm(pos_input_ids, pos_token_type_ids,#正样本嵌入(n,d)_, neg_cls_embedding = self.ptm(neg_input_ids, neg_token_type_ids,#负样本嵌入(n,d)# 一个损失函数(如margin_ranking_loss),模型可以学会将正样本的相似度最大化,同时将负样本的相似度最小化。# 正样本相似度是指模型计算出的正样本对之间的相似度。
2024-06-22 14:25:50
413
原创 重装系统,以及设置 深度 学习环境
第三步,设置bios u盘首启动,之后一路傻瓜式安装,刻录wins10和刻录普通的ubantu不一样,刻录ubantu只需要dd一个命令就行。双系统后如果报错,就进入分区,把挂载卸了。第一步:下载win10镜像,之后在系统用gparted新建个分区,格式化成ntfs,用来装win10系统。第二步,制作win10启动盘,这个需要先把u盘用disks格式化,之后用下面的命令刻录系统到u盘。创建conda环境 安装nvidia驱动,cuda,cudnn。下载anaconda bash 安装它。
2024-06-14 17:28:31
188
原创 政务问答系统模型动转静,插入milvus
dropout is not None和dropout是不一样的,dropout=0.时,dropout是False,dropout is not None是True。这是最常用的精度类型,cls_embedding = F.normalize(cls_embedding, p=2, axis=-1)#向量单位化(b,d)#(b,d)@(d,b)=(b,b),得到的是query中的每个语义向量和title的每个语义向量的余弦值.。yield text_embeddings#获取文本语义嵌入(b,d)
2024-06-13 03:09:16
1126
原创 政务问答系统构建语义模型和构建索引库和召回评估
1.0 - cosine_sims[row_index][idx]范围0-2,越大越不相似,因为cosine_sims[row_index][idx]范围-1-1。#每一行都是query和当前批次中的title的余弦相似度,按理对角线上更相似,因为对角线上是对应的query和title。#(b,d)@(d,b)=(b,b),得到的是query中的每个语义向量和title的每个语义向量的余弦值.。#(b,d)@(d,b)=(b,b),得到的是query中的每个语义向量和title的每个语义向量的余弦值.。
2024-06-12 19:48:38
788
原创 保险问答系统之模型训练召回评估
cosine_sim = paddle.sum(query_cls_embedding * title_cls_embedding, axis=-1)#query和title的余弦相似度。query_cls_embedding = self.get_pooled_embedding(#query向量表示(b,d)title_cls_embedding = self.get_pooled_embedding(#title向量表示(b,d)best_loss=float('inf')#最好的损失。
2024-06-12 08:16:57
1029
原创 通用信息提取数据预处理
type_role_map = {event_type: list(event_map[event_type]["参数"].keys()) for event_type in event_map}zb_instances = load_jsonlines_file(f"{output_folder}/金融信息_中标/train.json")zy_instances = load_jsonlines_file(f"{output_folder}/金融信息_质押/train.json")
2024-06-10 22:34:33
1003
原创 msra_ner实体识别
Pad(axis=0, pad_val=tokenizer.pad_token_type_id,dtype="int32"), # token_type_ids, 填充0。id_label = dict(zip(label_vocab.values(), label_vocab.keys()))#idx-->label字典。Pad(axis=0, pad_val=tokenizer.pad_token_id,dtype="int32"), # input_ids,填充0。
2024-05-28 20:26:28
770
原创 快递单命名实体识别
Pad(axis=0, pad_val=tokenizer.pad_token_type_id,dtype="int32"), # token_type_ids, 填充0。Pad(axis=0, pad_val=tokenizer.pad_token_type_id,dtype="int32"), # token_type_ids, 填充0。Pad(axis=0, pad_val=tokenizer.pad_token_id,dtype="int32"), # input_ids,填充0。
2024-05-27 21:04:13
969
原创 深度学习感悟
我觉得万事万物都逃不过y=f(x)这个关系,输入在某种法则作用下变成了输出,这个用来理解宇宙,就是我们知道宇宙的现状,就是y,知道自然法则,就是f,我们不知道的是x,其实深度学习也是如此,模型要找的是f,通过不断减小预测和真实值的 损失来找最好的w和b,而这个就是f,最好的f应该是方之四海而皆准的,而且深度学习中很多都是分类问题,图像分类,文本分类是分类,图像分割也可以看成分类,是对像素的分类,还有翻译,就是预测下一个字的概率分布,也是分类,看这个词元属于词汇表中的哪一个,图片可以看成序列,因为它是由像素值
2024-05-15 14:11:48
158
原创 英语到西班牙语翻译
val_pairs = text_pairs[num_train_samples : num_train_samples + num_val_samples]#验证集。spa_vocab = train_word_piece(spa_samples, SPA_VOCAB_SIZE, reserved_tokens)#西班牙词汇。stop_token_ids=[spa_tokenizer.token_to_id("[END]")],#结束标记,3。
2024-05-12 03:41:54
612
原创 可视化3个10分类
keras.callbacks.EarlyStopping(monitor="val_loss", patience=5),#超过四次验证损失不减少就停止。x = layers.Rescaling(scale=1.0 / 255)(inputs)#0-1归一化。
2024-05-09 18:02:32
691
原创 类激活可视化
last_conv_layer_output = last_conv_layer_output[0]#特征图(10,10,2048)#tf.maximum(heatmap, 0),会把heatmap中小于0的值变成0,大于0的值不变。#最后一层特征图的输出是确定的,不同的是不同图片获取的预测类别,pooled_grads。#获取类别分值对卷积特征图的梯度,梯度形状和特征图形状一样(1,10,10,2048)#构造热力图,参数:图片数据,模型,最后的卷积层,预测的类别。#图片路径,加权特征图。
2024-05-08 23:25:18
962
原创 集成梯度解释模型
integrated_grads = (img_input - baseline) * avg_grads#(1,299,299,3)*(299,299,3),对应元素相乘。baseline = np.random.random(img_size) * 255#获取0-1之间的随机数,形状(299,299,3)orig_img = np.copy(img[0]).astype(np.uint8)# (299, 299, 3),原图。integrated_grads.append(igrads)#两次。
2024-05-08 20:05:29
915
原创 可视化卷积网络
loss, img = gradient_ascent_step(img, filter_index, learning_rate,model)#梯度上升,loss,img。def compute_loss(input_image, filter_index,model):#参数:输入(四维张量),滤镜索引,特征提取模型。def gradient_ascent_step(img, filter_index, learning_rate,model):#图函数。
2024-05-08 16:37:06
581
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人