小约翰克涵 2022-07-13 14:40 采纳率: 42.9%
浏览 809
已结题

No such file or directory: 'saved_model_weight/resnet34_pretrain_ori_low_torch_version.pth'

报错信息:

Traceback (most recent call last):
  File "D:/OpenCVLearning-main/项目实战三_停车场车位识别/main.py", line 32, in <module>
    train_model()
  File "D:\OpenCVLearning-main\项目实战三_停车场车位识别\train.py", line 24, in train_model
    net.load_state_dict(torch.load(model_weight_path, map_location='cpu'))
  File "D:\Anaconda3\envs\PyTorch\lib\site-packages\torch\serialization.py", line 699, in load
    with _open_file_like(f, 'rb') as opened_file:
  File "D:\Anaconda3\envs\PyTorch\lib\site-packages\torch\serialization.py", line 231, in _open_file_like
    return _open_file(name_or_buffer, mode)
  File "D:\Anaconda3\envs\PyTorch\lib\site-packages\torch\serialization.py", line 212, in __init__
    super(_open_file, self).__init__(open(name, mode))
FileNotFoundError: [Errno 2] No such file or directory: 'saved_model_weight/resnet34_pretrain_ori_low_torch_version.pth'

train.py代码

import os
import torch
import torch.nn as nn
from torchvision.models import resnet34
import torch.optim as optim

from utils.model_utils import get_dataloader, data_transform_pretrain, model_train

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
def train_model():
    # 获取dataloader
    data_root = os.getcwd()
    image_path = os.path.join(data_root, "train_data")
    train_data_path = os.path.join(image_path, "train")
    val_data_path = os.path.join(image_path, "test")
    train_loader, validat_loader, train_num, val_num = get_dataloader(train_data_path, val_data_path,
                                                                      data_transform_pretrain, batch_size=8)

    # 创建模型 注意这里没指定类的个数,默认是1000类
    net = resnet34()
    model_weight_path = 'saved_model_weight/resnet34_pretrain_ori_low_torch_version.pth'

    # 使用预训练的参数,然后进行finetune
    net.load_state_dict(torch.load(model_weight_path, map_location='cpu'))
    # 改变fc layer structure  把fc的输出维度改为2
    in_channel = net.fc.in_features
    net.fc = nn.Linear(in_channel, 2)
    net.to(device)

    # 模型训练配置
    loss_function = nn.CrossEntropyLoss()
    optimizer = optim.Adam(net.parameters(), lr=0.0001)

    epochs = 30
    save_path = "saved_model_weight/resnet34_pretrain.pth"
    best_acc = 0.
    train_steps = len(train_loader)

    model_train(net, train_loader, validat_loader, epochs, device, optimizer, loss_function, train_steps, val_num,
                save_path, best_acc)

main.py代码

import torch
import os
# golb模块是用来查找符合特定规则命名的文件名的“路径+文件名”,其功能就是检索路径
import glob
import cv2
import pickle
import json
from PIL import Image
import matplotlib.pyplot as plt

from data_process import data_process
from train import train_model
from torchvision.models import resnet34
from predict_on_spot_img import predict_on_img
from predict_on_spot_video import predict_on_video

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

if __name__ == '__main__':

    # 如果没有停车位字典,先生成字典
    if not os.path.exists('spot_dict.pickle'):
        # 读入数据
        test_images = [cv2.imread(path) for path in glob.glob('test_images/*.jpg')]  # BGR
        spot_dict = data_process(test_images[1])
    else:
        spot_dict = pickle.load(open('spot_dict.pickle', 'rb'))

    # 读取训练好的ResNet模型
    if not os.path.exists('saved_model_weight/resnet34_pretrain.pth'):
        # 调用train函数训练模型
        train_model()
    else:
        # read class_indict
        json_path = './idx2class.json'
        assert os.path.exists(json_path), "file: '{}' dose not exist.".format(json_path)
        json_file = open(json_path, "r")
        class_indict = json.load(json_file)

        # 导入与训练好的模型
        model = resnet34(num_classes=2).to(device)
        weights_path = "saved_model_weight/resnet34_pretrain.pth"
        model.load_state_dict(torch.load(weights_path))

        # 预测一张停车场的图片
        #img = plt.imread('test_images/scene1380.jpg')
        #predict_on_img(img, spot_dict, model, class_indict)

        # 预测parking_video.mp4
        video_path = 'video/parking_video.mp4'
        predict_on_video(video_path, spot_dict, model, class_indict)

电脑配置:2GB 的GPU,是不是要修改一些函数的参数

img


目前没有进行模型训练,要训练,但以现在来看是没训练成功

展开全部

  • 写回答

2条回答 默认 最新

  • 广大菜鸟 2022-07-13 14:44
    关注

    FileNotFoundError: [Errno 2] No such file or directory: 'saved_model_weight/resnet34_pretrain_ori_low_torch_version.pth'
    你训练好的模型保存的文件有在?路径出错了或不存在

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    广大菜鸟 2022-07-13 14:45

    或者你写错了,训练完是要保存,而你是调用
    File "D:\OpenCVLearning-main\项目实战三_停车场车位识别\train.py", line 24, in train_model
    net.load_state_dict(torch.load(model_weight_path, map_location='cpu'))

    回复
    广大菜鸟 回复 广大菜鸟 2022-07-13 14:46

    torch.save(model.state_dict(), model_weight_path)

    回复
    小约翰克涵 2022-07-13 15:08

    目前还没进行模型训练,正要准备训练,但现在貌似没有训练成功

    回复
    展开全部7条评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 7月21日
  • 已采纳回答 7月13日
  • 修改了问题 7月13日
  • 修改了问题 7月13日
  • 展开全部

悬赏问题

  • ¥15 centos7.6进不去系统,卡在数字7界面
  • ¥15 Tensorflow采用interpreter.allocate_tensors()分配内存出现ValueError: vector too long报错
  • ¥15 使用CGenFF在线生成血红素辅基拓扑结构遇到问题
  • ¥15 在fragment使用okhttp同步上传文件,能不能在fragment销毁后还可以继续上传文件?
  • ¥20 matlab代码实现可达矩阵形成骨骼矩阵
  • ¥15 关于地板的木纹和图库中的匹配的
  • ¥30 机器学习预测疾病模型流程疑问
  • ¥50 2048Python实现
  • ¥15 使用ads进行低噪放仿真没有结果且不报错
  • ¥15 关于#python#的问题:有偿求一个千寻框架找书机器人插件
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部