• 我的创作纪念日


    机缘

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

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

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

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

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


    收获

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

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

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

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

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

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


    日常

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

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

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

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

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

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

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

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

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


    成就

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

    1. import torch
    2. from torch.utils.data import DataLoader, Dataset
    3. from transformers import T5ForConditionalGeneration, T5Tokenizer, AdamW
    4. model_name = "t5-small"
    5. model = T5ForConditionalGeneration.from_pretrained(model_name).to(device)
    6. tokenizer = T5Tokenizer.from_pretrained(model_name)
    7. # 构造训练数据
    8. data = []
    9. for i in range(800):
    10. a = random.randint(0, 9)
    11. b = random.randint(0, 9)
    12. op = random.choice(["+", "-"])
    13. if op == "+":
    14. result = a + b
    15. else:
    16. result = a - b
    17. data.append((f"{a} {op} {b}", str(result)))
    18. max_length = 32
    19. train_dataset = MyDataset(data, tokenizer, max_length)
    20. #train_dataset = MyDataset(data, tokenizer)
    21. train_loader = DataLoader(train_dataset, batch_size=4, shuffle=True)
    22. # 训练模型
    23. num_epochs = 10
    24. optimizer = torch.optim.AdamW(model.parameters(), lr=5e-5)
    25. for epoch in range(num_epochs):
    26. model.train()
    27. for batch in train_loader:
    28. input_ids = batch["input_ids"].to(device)
    29. attention_mask = batch["attention_mask"].to(device)
    30. labels = batch["labels"].to(device)
    31. outputs = model(input_ids=input_ids, attention_mask=attention_mask, labels=labels)
    32. loss = outputs.loss
    33. loss.backward()
    34. optimizer.step()
    35. optimizer.zero_grad()
    36. print(f"Epoch: {epoch}, Loss: {loss.item():.6f}")

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

    1. from paddleocr import PaddleOCR
    2. ocr = PaddleOCR(enable_mkldnn=True, use_angle_cls=False)
    3. # 图片OCR转文本信息
    4. def image2text(img):
    5. result = ocr.ocr(img)
    6. title, degree, position = [], [], []
    7. title_append, position_append = title.append, position.append
    8. for key in result:
    9. key[-1] = list(key[-1])
    10. key[-1][0] = key[-1][0].replace('\n', '')
    11. if len(key[-1][0])>1:
    12. title_append(key[-1][0])
    13. position_append(key[0][0][0])
    14. return title,position
    15. # 段落按照 规则合并函数
    16. def paragraph_num(title,position):
    17. pass # 详见《深度学习实战43-OCR功能集合【OCR基本原理+OCR文本分段合并+PDF扫描文件OCR识别】》
    18. if __name__=="__main__":
    19. file_path ='text.png'
    20. title,position = image2text(file_path)
    21. res = paragraph_num(title,position)
    22. print(res)

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

    1. # 搭建bert+textCNN+专家系统+LLM神经网络模型,用pytorch
    2. import torch
    3. import torch.nn as nn
    4. from transformers import BertModel
    5. class TextCNN(nn.Module):
    6. def __init__(self, config):
    7. super(TextCNN, self).__init__()
    8. self.config = config
    9. self.bert = BertModel.from_pretrained(config.bert_path)
    10. self.convs = nn.ModuleList(
    11. [
    12. nn.Sequential(
    13. nn.Conv2d(1, config.num_filters, (k, config.hidden_size)),
    14. nn.ReLU(),
    15. nn.MaxPool2d((config.max_len - k + 1, 1)),
    16. nn.Flatten(),
    17. )
    18. for k in config.filter_sizes
    19. ]
    20. )
    21. self.fc = nn.Linear(config.num_filters * len(config.filter_sizes), config.num_classes)
    22. def forward(self, x):
    23. context = x[0] # 表示句孽数据
    24. mask = x[2] # 填充的mask
    25. encoder_out, text_cls = self.bert(context, attention_mask=mask, output_hidden_states=True)
    26. out = encoder_out.permute(0, 2, 1)
    27. out = torch.cat([conv(out) for conv in self.convs], dim=1)
    28. out = self.fc(out)
    29. return out
    30. class Config(object):
    31. def __init__(self):
    32. self.bert_path = './bert_pretrain'
    33. self.filter_sizes = (2, 3, 4)
    34. self.num_filters = 256
    35. self.hidden_size = 768
    36. self.max_len = 512
    37. self.num_classes = 8
    38. self.device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
    39. self.dropout = 0.5
    40. config = Config()
    41. model = TextCNN(config)
    42. model.to(config.device)
    43. print(model)
    44. # 将参数输入到8个专家模型中,构建类,专家检概率最大的分类为检概率最大的分类
    45. class Expert1(nn.Module):
    46. def __init__(self, model):
    47. super(Expert1, self).__init__()
    48. self.model = model
    49. def forward(self, x):
    50. out = self.model1(x)
    51. return out
    52. class Expert2(nn.Module):
    53. def __init__(self, model):
    54. super(Expert2, self).__init__()
    55. self.model = model
    56. def forward(self, x):
    57. out = self.model(x)
    58. return out
    59. class Expert3(nn.Module):
    60. def __init__(self, model):
    61. super(Expert3, self).__init__()
    62. self.model = model
    63. def forward(self, x):
    64. out = self.model(x)
    65. return out
    66. ...
    67. #剩下的几个专家系统待加载
    68. expert = Expert1(model)
    69. expert.to(config.device)
    70. print(expert)
    71. # 将检概率最大的分类返回给专家
    72. def get_max_prob_label(probs):
    73. return probs.argmax(dim=1)

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

    1. EPOCH = 100
    2. BATCH_SIZE = 50
    3. net = MyNet()
    4. x_data, y_data = net.get_data()
    5. torch_dataset = Data.TensorDataset(x_data, y_data)
    6. loader = Data.DataLoader(
    7. dataset=torch_dataset,
    8. batch_size=BATCH_SIZE,
    9. shuffle=True,
    10. num_workers=2,
    11. )
    12. for epoch in range(EPOCH):
    13. for step, (batch_x, batch_y) in enumerate(loader):
    14. # print(step)
    15. # print(step,'batch_x={}; batch_y={}'.format(batch_x, batch_y))
    16. a = net.train(batch_x, batch_y)
    17. print('step:',step,a)
    18. # 保存模型
    19. torch.save(net, 'net.pkl')

    憧憬

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

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

  • 相关阅读:
    原装芯片现货,价格优惠,实单可谈
    安防监控项目---通信结构体设计
    五、OCR-PaddlePaddle训练源码解析系列-文字检测
    Spire Office 7.5.4 for NET
    [设计模式] 浅谈SOLID设计原则
    数据集笔记:华盛顿共享单车OD数据
    【算法】排序——归并排序和计数排序
    散列表(hash表)的基本原理以及hash冲突(碰撞)
    [附源码]计算机毕业设计SpringBoot心理健康系统
    萌新也能看懂的KMP算法
  • 原文地址:https://blog.csdn.net/weixin_42878111/article/details/133173660