knv

    1. 新年新挑战,任务打卡赢好礼! 97/1092 聊聊、笑笑、闹闹 2025-01-20
        1、更新完善个人信息:完善您的个人资料,让我们更好地了解您。   2、回复3个帖子:在论坛中积极参与讨论,分享您的见解与心得。     3、认真学完1个大学堂视频:提升自我,获取知识,享受学习的乐趣。   4、报名参加活动中心的1个活动:融入社区,与更多志同道合的人一起共度美好时光。           5、下载一份资源站资料:获取您需要的资源,助力您的学习与工作。      
    2. 充电站各类安全隐患及处理建议 2/175 汽车电子 2025-01-20
      学习了
    3. “我只要你的壳”之TI-82计算器改造(1) 9/202 DIY/开源硬件专区 2025-01-20
      有想法,不错
    4. 【嘉楠K230开发板】开箱与开发环境搭建 2/115 国产芯片交流 2025-01-20
      学习一下
    5. 厉害
    6. 板子有点意思
    7. 非常巧妙
    8. 本帖最后由 knv 于 2024-7-8 17:47 编辑 个人信息已确认,请安排邮寄。感谢luckfox和eeworld的活动
    9. 本帖最后由 knv 于 2024-5-24 17:55 编辑 完成打卡:) 大家有问题可以群里讨论或者帖子留言 https://bbs.eeworld.com.cn/thread-1282455-1-1.html
    10. 大佬牛皮
    11. aramy 发表于 2024-5-22 16:40 大佬:求助!按您这个流程跑下来。提示:E RKNN: failed to decode config data!   求指导!谢 ...
      将编译后生成的 luckfox_rtsp_opencv_demo 目录下面的 lib也复制到开发板运行目录中,再尝试运行
    12. 本帖最后由 knv 于 2024-5-8 18:10 编辑 补充准确率: 验证准确率 99.16%         新版本代码: import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader class OptimizedConvNet(nn.Module): def __init__(self,num_classes=10): super(OptimizedConvNet, self).__init__() self.layer1 = nn.Sequential( nn.Conv2d(1, 32, kernel_size=5, stride=1, padding=2), nn.ReLU(), nn.MaxPool2d(kernel_size=2, stride=2)) self.layer2 = nn.Sequential( nn.Conv2d(32, 64, kernel_size=5, stride=1, padding=2), nn.ReLU(), nn.MaxPool2d(kernel_size=2, stride=2)) self.drop_out = nn.Dropout() self.fc1 = nn.Linear(7 * 7 * 64, 1000) self.fc2 = nn.Linear(1000, num_classes) def forward(self, x): out = self.layer1(x) out = self.layer2(out) out = out.reshape(out.size(0), -1) out = self.drop_out(out) out = self.fc1(out) out = self.fc2(out) return out # 定义超参数 learning_rate = 0.001 batch_size = 64 num_epochs = 10 # 检查是否有可用的GPU device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') # 创建模型,并将模型移动到GPU上 model = OptimizedConvNet(num_classes=10).to(device) # 定义损失函数和优化器 criterion = nn.CrossEntropyLoss() optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate) # 加载MNIST数据集 transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))]) train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform) train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True) # 加载验证集 valid_dataset = datasets.MNIST(root='./data', train=False, download=True, transform=transform) valid_loader = DataLoader(valid_dataset, batch_size=64, shuffle=False) # 初始化最优验证损失为无穷大 best_valid_loss = float('inf') import matplotlib.pyplot as plt # 初始化准确率列表 train_accuracies = [] valid_accuracies = [] for epoch in range(num_epochs): # 在训练集上训练 model.train() total_train_loss = 0 correct_train_preds = 0 total_train_preds = 0 for i, (images, labels) in enumerate(train_loader): images = images.to(device) labels = labels.to(device) outputs = model(images) loss = criterion(outputs, labels) _, predicted = torch.max(outputs.data, 1) total_train_preds += labels.size(0) correct_train_preds += (predicted == labels).sum().item() optimizer.zero_grad() loss.backward() optimizer.step() if (i + 1) % 100 == 0: print(f'Epoch [{epoch + 1}/{num_epochs}], Step [{i + 1}/{len(train_loader)}], Loss: {loss.item()}') total_train_loss += loss.item() average_train_loss = total_train_loss / len(train_loader) train_accuracy = correct_train_preds / total_train_preds train_accuracies.append(train_accuracy) print(f'Epoch: {epoch + 1}, Training Loss: {average_train_loss:.4f}, Training Accuracy: {train_accuracy:.4f}') # 在验证集上验证 model.eval() valid_loss = 0.0 correct_valid_preds = 0 total_valid_preds = 0 with torch.no_grad(): for images, labels in valid_loader: images = images.to(device) labels = labels.to(device) outputs = model(images) loss = criterion(outputs, labels) _, predicted = torch.max(outputs.data, 1) total_valid_preds += labels.size(0) correct_valid_preds += (predicted == labels).sum().item() valid_loss += loss.item() valid_loss /= len(valid_loader) valid_accuracy = correct_valid_preds / total_valid_preds valid_accuracies.append(valid_accuracy) print(f'Epoch: {epoch+1}, Validation Loss: {valid_loss:.4f}, Validation Accuracy: {valid_accuracy:.4f}') # 如果验证损失有所下降,则保存模型 if valid_loss < best_valid_loss: best_valid_loss = valid_loss torch.save(model.state_dict(), 'best_model.pth') print('Model saved.') # 绘制训练和验证准确率 plt.plot(range(1, num_epochs + 1), train_accuracies, label='Train') plt.plot(range(1, num_epochs + 1), valid_accuracies, label='Valid') plt.title('Model Accuracy') plt.xlabel('Epochs') plt.ylabel('Accuracy') plt.legend() plt.show()  
    13. 本帖最后由 knv 于 2024-5-9 09:12 编辑 个人信息已确认,领取板卡,可继续完成&分享挑战营第二站和第三站任务。   训练结果已补充到原帖回复中。
    14. xianhangCheng 发表于 2024-5-8 11:31 发现有一个这个错误, AssertionError: target_platform set as ['RV1106'] is not support
      跟我的步骤走的肯定没问题,手动创建一下data.txt 内容是一张测试图片的路径 我的是28*28像素的png 比如: 6.png  
    15. 和和123 发表于 2024-4-26 11:32 什么时候公布获取幸狐RV1106开发板名单、开发板派发?
      五月十号
    16.   RKNN模型是RK公司设计的一套模型格式,用于在rknpu上加速运行 ONNX模型是通用的开放模型格式,可以用于直接使用或模型转换。在专用npu上可能无法加速运行 #AI挑战营第二站# 基于RV1106芯片的RKNN环境部署及模型转换过程 https://bbs.eeworld.com.cn/thread-1280038-1-1.html
    17. 机器学习模型的文件格式有哪些? 10/4246 嵌入式系统 2024-04-23
      onnx用的还是挺多的。
    18. 1:模型训练的本质是通过不断地优化,找到最优数据集参数。使其在结果集验证中损失函数值最小,或者在验证集上的性能最好。 2:PyTorch是一个基于Python的机器学习库。用于深度学习算法的研究和开发。支持windwos linux,macos等等系统,可以使用cpu或者nVidia显卡加速运行。 3:https://bbs.eeworld.com.cn/thread-1278064-1-1.html
    19. #AI挑战营第一站# PC基于PyTorch的MNIST模型训练过程与模型转换 预期应用:使用RV1106开发一套车牌识别功能。
    20. 666

统计信息

已有71人来访过

  • 芯积分:167
  • 好友:--
  • 主题:9
  • 回复:24

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言