机缘
提示:可以和大家分享最初成为创作者的初心
-
实战项目中的经验分享:在大型软件开发项目中,我发现通过应用敏捷开发方法来处理工作流程能够大大提升效率。这包括定期的冲刺计划、日常立会和代码审查。这种方法使得团队更能够及时发现并解决问题,减少了项目的风险。
-
日常学习过程中的记录:我在学习新的编程语言Python时,发现通过创建和维护一份个人的学习笔记非常有用。这些笔记包括了我在学习过程中遇到的问题、我是如何解决这些问题的,以及我认为重要的概念和代码片段。
-
通过文章进行技术交流:我发现通过编写和发布关于我工作和学习的技术博客,能够帮助我更深入地理解我正在学习的内容。同时,这些博客也给我提供了一个平台,使我能够与其他人分享我的知识和经验,与他们进行技术交流,甚至有时还能得到他们的反馈和建议。
收获
提示:在创作的过程中都有哪些收获
-
粉丝关注:自从我开始分享我的博客,我已经吸引了数名粉丝。他们中的许多人对我的工作表示赞赏,这让我感到非常骄傲和满足。
-
正向反馈:我收到了一些反馈,包括赞、评论和阅读量。这些反馈让我知道我的文章在帮助别人,也鼓励我继续我的创作。
-
认识同行:通过CSDN,我有机会接触到许多志同道合的同行。我们互相学习,分享经验,这对我的职业生涯和个人成长都非常有帮助。
日常
提示:当前创作和你的工作、学习是什么样的关系
-
日常生活中的创作与工作或学习的关系: 创作往往成为许多人生活的重要组成部分。它可能是一种释放创造力的方式,也可以帮助人们更好地理解和掌握他们正在学习或工作的主题。例如,一位编程专业的学生可能会通过编写和发布关于新学到的编程技巧的博客文章来帮助巩固他们的知识。另一方面,一位职业作家或艺术家可能会将创作作为他们的主要工作,每天都在创作新的作品。
-
如何平衡创作和工作或学习: 这可能会根据个人的情况和优先级而变化。一些人可能会选择在他们的空闲时间进行创作,例如在下班后或周末。其他人可能会设定特定的时间来专门进行创作,例如每天早上的第一个小时。关键是找到一种能够使工作、学习和创作都能得到充分关注的平衡方式。这可能需要试验不同的时间管理策略和习惯,以找到最适合自己的方法。
成就
提示:你过去写得最好的一段代码是什么? 请用代码块贴出来
这是一篇博客文章中的重要 Python 代码。此代码是使用 BERT 模型进行情绪分类的提示学习的完整示例,BERT 模型是自然语言处理任务的常用转换器模型。提供的代码包括 BERT 模型的设置、数据加载和处理,以及创建用于训练、验证和测试数据集的 PyTorch 数据加载器。
import warnings
from datetime import datetime
import time
import torch
import os
from transformers import BertModel,BertConfig,BertModel,BertTokenizerFast,get_cosine_schedule_with_warmup,BertForMaskedLM
import pandas as pd
import torch
import torch.nn as nn
import torch.optim as optim
import torch.utils.data as Data
from torch.utils.tensorboard import SummaryWriter
# hyperparameters
EPOCH=200
RANDOM_SEED=2022
TRAIN_BATCH_SIZE=32 #小批训练, 批大小增大时需要提升学习率 https://zhuanlan.zhihu.com/p/413656738
TEST_BATCH_SIZE=96 #大批测试
EVAL_PERIOD=20
MODEL_NAME="bert-large-uncased" # bert-base-chinese
DATA_PATH="data/Twitter2013"
MASK_POS=3 # "it was [mask]" 中 [mask] 位置
train_file="twitter-2013train-A.tsv"
dev_file="twitter-2013dev-A.tsv"
test_file="twitter-2013test-A.tsv"
device=torch.device("cuda" if torch.cuda.is_available() else "cpu")
writer = SummaryWriter('./tb_log')
'''
'''
pd.options.display.max_columns = None
pd.options.display.max_rows = None
prefix = 'It was [mask]. '
class Bert_Model(nn.Module):
def __init__(self, bert_path ,config_file ):
super(Bert_Model, self).__init__()
self.bert = BertForMaskedLM.from_pretrained(bert_path,config=config_file) # 加载预训练模型权重
def forward(self, input_ids, attention_mask, token_type_ids):
outputs = self.bert(input_ids, attention_mask, token_type_ids) #masked LM 输出的是 mask的值 对应的ids的概率 ,输出 会是词表大小,里面是概率
logit = outputs[0] # 池化后的输出 [bs, config.hidden_size]
return logit
#构建数据集
class MyDataSet(Data.Dataset):
def __init__(self, sen , mask , typ ,label ):
super(MyDataSet, self).__init__()
self.sen = torch.tensor(sen,dtype=torch.long)
self.mask = torch.tensor(mask,dtype=torch.long)
self.typ =torch.tensor( typ,dtype=torch.long)
self.label = torch.tensor(label,dtype=torch.long)
def __len__(self):
return self.sen.shape[0]
def __getitem__(self, idx):
return self.sen[idx], self.mask[idx],self.typ[idx],self.label[idx]
#load data
def load_data(tsvpath):
data=pd.read_csv(tsvpath,sep="\t",header=None,names=["sn","polarity","text"])
data=data[data["polarity"] != "neutral"]
yy=data["polarity"].replace({"negative":0,"positive":1,"neutral":2})
# print(data.loc[0:5,[0,1]]) #
#print(data.iloc[0:5,[1,1```python
#]) #
#print(data.iloc[:,1:2]) #
#print(data.iloc[:,2:3]) #
return data.values[:,2:3].tolist(),yy.tolist() #data.values[:,1:2].tolist()
tokenizer=BertTokenizerFast.from_pretrained(MODEL_NAME)
config=BertConfig.from_pretrained(MODEL_NAME)
model=Bert_Model(bert_path=MODEL_NAME,config_file=config).to(device)
pos_id=tokenizer.convert_tokens_to_ids("good") #9005
neg_id=tokenizer.convert_tokens_to_ids("bad") #12139
# get the data and label
def ProcessData(filepath):
x_train,y_train=load_data(DATA_PATH+os.sep+filepath)
#x_train,x_test,y_train,y_test=train_test_split(StrongData,StrongLabel,test_size=0.3, random_state=42)
Inputid=[]
Labelid=[]
typeid=[]
attenmask=[]
for i in range(len(x_train)):
text_ = prefix+x_train[i][0]
encode_dict = tokenizer.encode_plus(text_,max_length=60,padding="max_length",truncation=True)
input_ids=encode_dict["input_ids"]
type_ids=encode_dict["token_type_ids"]
atten_mask=encode_dict["attention_mask"]
labelid,inputid= input_ids[:],input_ids[:]
if y_train[i] == 0:
labelid[MASK_POS] = neg_id
labelid[:MASK_POS] = [-1]* len(labelid[:MASK_POS])
labelid[MASK_POS+1:] = [-1] * len(labelid[MASK_POS+1:])
inputid[MASK_POS] = tokenizer.mask_token_id
else:
labelid[MASK_POS] = pos_id
labelid[:MASK_POS] = [-1]* len(labelid[:MASK_POS])
labelid[MASK_POS+1:] = [-1] * len(labelid[MASK_POS+1:])
inputid[MASK_POS] = tokenizer.mask_token_id
Labelid.append(labelid)
Inputid.append(inputid)
typeid.append(type_ids)
attenmask.append(atten_mask)
return Inputid,Labelid,typeid,attenmask
Inputid_train,Labelid_train,typeids_train,inputnmask_train=ProcessData(train_file)
Inputid_dev,Labelid_dev,typeids_dev,inputnmask_dev=ProcessData(dev_file)
Inputid_test,Labelid_test,typeids_test,inputnmask_test=ProcessData(test_file)
train_dataset = Data.DataLoader(MyDataSet(Inputid_train, inputnmask_train , typeids_train , Labelid_train), TRAIN_BATCH_SIZE, True)
valid_dataset = Data.DataLoader(MyDataSet(Inputid_dev, inputnmask_dev , typeids_dev , Labelid_dev), TRAIN_BATCH_SIZE, True)
test_dataset = Data.DataLoader【43†source】
这段代码证明了对转换器模型、情感分析和 PyTorch(一个用于构建深度学习模型的强大库)的理解。
憧憬
在CSDN创作的过程中,发现自己有许多的不足。比如技术不够深入,在之后的学习过程中,多多阅读专业技术书籍,以扩宽自己知识面的深度和广度,给大家输出更加优质的文章。
在一个就是希望通过不断的写作和学习,沉淀自己的技术功底。让我们一起加油吧~
最后,希望CSDN越来越好,越做越强,加油,未来可期。
Tips