我的创作纪念日

机缘

我是2019年开始热衷于投入人工智能的学习中,个人觉得人工智能未来是有很多潜力的,虽然刚开始接触的时候,面对各种问题,需要打好数学基础,还有算法原理基础,这些问题在一次次的尝试中解决,有困难也有成功,有放弃的时候,也有调试成功的喜悦。

在去年我觉得将自己学的东西写成文章发布,不仅可以自我巩固,也可以给大家分析学习的心得,望大家多多指点,认识更多的人工智能的大佬,可以互相学习互相沟通。

作为一个创作者,到现在,我一直对人工智能技术和创造有着极大的热情,自己积累了很多在学习和实践中的经验和教训。所以我希望通过记录和分享自己的故事,能够帮助和启发更多的人。

在我实战项目中的经验分享中,我会尽可能详细地记录下我在项目中遇到的问题和解决方案,希望可以给其他人提供一些借鉴和参考。此外,我还会分享自己在日常学习过程中遇到的收获,尽可能呈现出一个真实的学习过程,让大家可以更好地理解和掌握相关技术,并从一些些的细节着手到慢慢的深入。

除了在实践中积累经验外,我会写一些技术心得和分享,同时也会阅读和学习其他人的文章。这样可以扩大自己的视野和认识,同时也可以和其他人交流和讨论。


收获

我在创作的过程中还有以下几个方面的收获:

1.提升自信:在创作过程中,我们需要对自己的想法和创意进行充分的表达和阐释。这样的过程可以让我们更加清晰地认识自己的能力和价值,从而提升自信心。

2.增强创造力:通过不断的创作,可以激发我们的想象力和创造力,让我们不断挑战自我,进一步提升创意水平。

3.培养耐心和毅力:创作需要时间和耐心,需要反复推敲和打磨。在这个过程中,我们可以逐渐培养自己的耐心和毅力,为达成目标而不断努力。

4.发现自我:创作可以让我们更深入地认识自己,发现自己的喜好、擅长和性格特点。这对于今后的职业规划和生活方向都非常有益,同时也发现自己的不足,需要改正的地方。

5.建立人际关系:通过创作,我们可以结交到一些人工智能志同道合的人,分享经验和资源,拓展人脉关系。


日常

对于我来说,创作已经成为了我的生活的重要组成部分。创作文章和提供技术咨询帮助,这本身就是一种创作与自我提升的过程。我通过自己的不断实践与努力,不断提升自己的回答能力和创作水平。

在工作和学习方面,我认为平衡是关键。虽然创作对我来说很重要,但我也要确保能够充分完成我的工作任务。因此,我会将工作和学习放在优先位置,并合理规划时间。我会尽量高效地回答用户的问题,同时保持自己的学习状态,不断改善和提升我的回答能力。

我也会抽出时间进行专业知识的学习和更新,以保持自己的学习进步和增加自己的知识储备。我会持续关注各个领域的最新进展,以便能够更好地服务用户并满足他们的需求。

平常我经常关注实时新闻,将生活中的事情结合AI操作文章,例如结合生活创作了:

《计算机视觉的应用13-基于SSD模型的城市道路积水识别的应用项目》

《自然语言处理实战项目17-基于多种NLP模型的诈骗电话识别方法研究与应用实战》

《机器学习实战12-基于历史数据的台风的预测与分析(2023年第5号台风杜苏芮将登陆福建)》 

《机器学习实战14-在日本福岛核电站排放污水的背景下,核电站对人口影响的分析实践》

《机器学习实战13-超导体材料的临界温度预测与分析(决策树回归,梯度提升回归,随机森林回归和Bagging回归)》


成就

我过去写得很多文章里面,解决了很多问题:
1.用T5模型训练生成数字加减结果,衍生其他生成文本问题,主要代码:

import torch
from torch.utils.data import DataLoader, Dataset
from transformers import T5ForConditionalGeneration, T5Tokenizer, AdamW

model_name = "t5-small"
model = T5ForConditionalGeneration.from_pretrained(model_name).to(device)
tokenizer = T5Tokenizer.from_pretrained(model_name)
 
# 构造训练数据
data = []
for i in range(800):
    a = random.randint(0, 9)
    b = random.randint(0, 9)
    op = random.choice(["+", "-"])
    if op == "+":
        result = a + b
    else:
        result = a - b
    data.append((f"{a} {op} {b}", str(result)))
 
 
max_length = 32
train_dataset = MyDataset(data, tokenizer, max_length)
 
#train_dataset = MyDataset(data, tokenizer)
train_loader = DataLoader(train_dataset, batch_size=4, shuffle=True)
 
# 训练模型
num_epochs = 10
optimizer = torch.optim.AdamW(model.parameters(), lr=5e-5)
 
for epoch in range(num_epochs):
    model.train()
    for batch in train_loader:
        input_ids = batch["input_ids"].to(device)
        attention_mask = batch["attention_mask"].to(device)
        labels = batch["labels"].to(device)
 
        outputs = model(input_ids=input_ids, attention_mask=attention_mask, labels=labels)
        loss = outputs.loss
        loss.backward()
 
        optimizer.step()
        optimizer.zero_grad()
 
        print(f"Epoch: {epoch}, Loss: {loss.item():.6f}")

2.OCR基本原理+OCR文本分段合并+PDF扫描文件OCR识别,主要代码:

from paddleocr import PaddleOCR
ocr = PaddleOCR(enable_mkldnn=True, use_angle_cls=False)

# 图片OCR转文本信息
def image2text(img):
    result = ocr.ocr(img)
    title, degree, position = [], [], []
    title_append, position_append = title.append, position.append
    for key in result:
        key[-1] = list(key[-1])
        key[-1][0] = key[-1][0].replace('\n', '')

        if len(key[-1][0])>1:
            title_append(key[-1][0])
            position_append(key[0][0][0])

    return title,position

# 段落按照 规则合并函数
def paragraph_num(title,position):
     pass  # 详见《深度学习实战43-OCR功能集合【OCR基本原理+OCR文本分段合并+PDF扫描文件OCR识别】》


if __name__=="__main__":
    file_path ='text.png'
    
    title,position = image2text(file_path)
    res = paragraph_num(title,position)
    print(res)

 3.基于大模型开发MathGPT的架构,主要代码:

# 搭建bert+textCNN+专家系统+LLM神经网络模型,用pytorch

import torch
import torch.nn as nn
from transformers import BertModel

class TextCNN(nn.Module):
    def __init__(self, config):
        super(TextCNN, self).__init__()
        self.config = config
        self.bert = BertModel.from_pretrained(config.bert_path)
        self.convs = nn.ModuleList(
            [
                nn.Sequential(
                    nn.Conv2d(1, config.num_filters, (k, config.hidden_size)),
                    nn.ReLU(),
                    nn.MaxPool2d((config.max_len - k + 1, 1)),
                    nn.Flatten(),
                )
                for k in config.filter_sizes
            ]
        )
        self.fc = nn.Linear(config.num_filters * len(config.filter_sizes), config.num_classes)

    def forward(self, x):
        context = x[0]  # 表示句孽数据
        mask = x[2]  # 填充的mask
        encoder_out, text_cls = self.bert(context, attention_mask=mask, output_hidden_states=True)
        out = encoder_out.permute(0, 2, 1)
        out = torch.cat([conv(out) for conv in self.convs], dim=1)
        out = self.fc(out)
        return out

class Config(object):
    def __init__(self):
        self.bert_path = './bert_pretrain'
        self.filter_sizes = (2, 3, 4)
        self.num_filters = 256
        self.hidden_size = 768
        self.max_len = 512
        self.num_classes = 8
        self.device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
        self.dropout = 0.5

config = Config()
model = TextCNN(config)
model.to(config.device)
print(model)

# 将参数输入到8个专家模型中,构建类,专家检概率最大的分类为检概率最大的分类
class Expert1(nn.Module):
    def __init__(self, model):
        super(Expert1, self).__init__()
        self.model = model
    def forward(self, x):
        out = self.model1(x)
        return out

class Expert2(nn.Module):
    def __init__(self, model):
        super(Expert2, self).__init__()
        self.model = model

    def forward(self, x):
        out = self.model(x)
        return out

class Expert3(nn.Module):
    def __init__(self, model):
        super(Expert3, self).__init__()
        self.model = model

    def forward(self, x):
        out = self.model(x)
        return out
...
#剩下的几个专家系统待加载

expert = Expert1(model)
expert.to(config.device)
print(expert)
# 将检概率最大的分类返回给专家
def get_max_prob_label(probs):
    return probs.argmax(dim=1)

 4.卷积神经网络(Pytorch)+聚类分析实现空气质量,主要代码:

EPOCH = 100
BATCH_SIZE = 50

net = MyNet()
x_data, y_data = net.get_data()
torch_dataset = Data.TensorDataset(x_data, y_data)
loader = Data.DataLoader(
        dataset=torch_dataset,
        batch_size=BATCH_SIZE,
        shuffle=True,
        num_workers=2,
    )
for epoch in range(EPOCH):
        for step, (batch_x, batch_y) in enumerate(loader):
            # print(step)
            # print(step,'batch_x={};  batch_y={}'.format(batch_x, batch_y))
            a = net.train(batch_x, batch_y)
            print('step:',step,a)
 # 保存模型
torch.save(net, 'net.pkl')

憧憬

在创作方面,我会根据用户的需求撰写文章和回答问题,涵盖各个领域的知识和信息,力求内容准确、全面而又易于理解。我会关注用户的反馈和需求,不断优化自己的回答方式和表达能力,从而提供更加个性化和有价值的回答。

我将努力使这些文章内容丰富、温馨,以及与用户的生活和价值观相契合。我也期待通过提供优质的回答和创作获得用户的认可和支持。在未来,如果我的创作受到用户的喜爱和好评,我将倍加努力,探索更多创作的可能性,更加地贴近生活,并继续提供有益的信息和帮助。

你可能感兴趣的:(自然语言处理,人工智能,NLP,pytorch)