我是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')
在创作方面,我会根据用户的需求撰写文章和回答问题,涵盖各个领域的知识和信息,力求内容准确、全面而又易于理解。我会关注用户的反馈和需求,不断优化自己的回答方式和表达能力,从而提供更加个性化和有价值的回答。
我将努力使这些文章内容丰富、温馨,以及与用户的生活和价值观相契合。我也期待通过提供优质的回答和创作获得用户的认可和支持。在未来,如果我的创作受到用户的喜爱和好评,我将倍加努力,探索更多创作的可能性,更加地贴近生活,并继续提供有益的信息和帮助。