knv

    1. 厉害
    2. 板子有点意思
    3. 非常巧妙
    4. 本帖最后由 knv 于 2024-7-8 17:47 编辑 个人信息已确认,请安排邮寄。感谢luckfox和eeworld的活动
    5. 本帖最后由 knv 于 2024-5-24 17:55 编辑 完成打卡:) 大家有问题可以群里讨论或者帖子留言 https://bbs.eeworld.com.cn/thread-1282455-1-1.html
    6. 大佬牛皮
    7. aramy 发表于 2024-5-22 16:40 大佬:求助!按您这个流程跑下来。提示:E RKNN: failed to decode config data!   求指导!谢 ...
      将编译后生成的 luckfox_rtsp_opencv_demo 目录下面的 lib也复制到开发板运行目录中,再尝试运行
    8. 本帖最后由 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()  
    9. 本帖最后由 knv 于 2024-5-9 09:12 编辑 个人信息已确认,领取板卡,可继续完成&分享挑战营第二站和第三站任务。   训练结果已补充到原帖回复中。
    10. xianhangCheng 发表于 2024-5-8 11:31 发现有一个这个错误, AssertionError: target_platform set as ['RV1106'] is not support
      跟我的步骤走的肯定没问题,手动创建一下data.txt 内容是一张测试图片的路径 我的是28*28像素的png 比如: 6.png  
    11. 和和123 发表于 2024-4-26 11:32 什么时候公布获取幸狐RV1106开发板名单、开发板派发?
      五月十号
    12.   RKNN模型是RK公司设计的一套模型格式,用于在rknpu上加速运行 ONNX模型是通用的开放模型格式,可以用于直接使用或模型转换。在专用npu上可能无法加速运行 #AI挑战营第二站# 基于RV1106芯片的RKNN环境部署及模型转换过程 https://bbs.eeworld.com.cn/thread-1280038-1-1.html
    13. 机器学习模型的文件格式有哪些? 10/3982 嵌入式系统 2024-04-23
      onnx用的还是挺多的。
    14. 1:模型训练的本质是通过不断地优化,找到最优数据集参数。使其在结果集验证中损失函数值最小,或者在验证集上的性能最好。 2:PyTorch是一个基于Python的机器学习库。用于深度学习算法的研究和开发。支持windwos linux,macos等等系统,可以使用cpu或者nVidia显卡加速运行。 3:https://bbs.eeworld.com.cn/thread-1278064-1-1.html
    15. #AI挑战营第一站# PC基于PyTorch的MNIST模型训练过程与模型转换 预期应用:使用RV1106开发一套车牌识别功能。
    16. 666
    17. 个人信息无误,已知晓需自己支付邮费
    18. 辞旧:年底清仓,100+板卡来袭,有缘来领 135/9731 测评中心专版 2024-01-09
      本帖最后由 knv 于 2024-1-9 15:27 编辑 申请CH554板卡 一直想学习基于8051的usb,感觉ch554非常适合学习usb host/device,构建复合设备。 学习基本的8051编程,研究USB协议的不同层级,包括物理层、数据链路层、主机/设备层和应用层,学习USB传输模型、端点、描述符等概念,并实现USB数据传输。
    19. 学习了,感谢
    20. 收到了 感谢eeworld

统计信息

已有71人来访过

  • 芯积分:259
  • 好友:--
  • 主题:9
  • 回复:20

留言

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


现在还没有留言