2301_82069886 2024-03-27 15:29 采纳率: 0%
浏览 615

使用yolov8做目标检测训练的时候gpu_men一直显示0g,也没有报什么错,就是训练特别慢

使用yolov8做目标检测训练的时候gpu_men一直显示0g,也没有报什么错,就是训练特别慢

img


查了一下任务管理器,内存也没有被占满,所以有人知道这是为什么吗?

img

  • 写回答

3条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-03-27 15:29
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    可能的原因是:
    • GPU内存管理不当,可能是因为没有正确设置GPU device,导致程序没有占用GPU内存。
    • 数据读取速度慢,导致模型训练速度慢。可能是因为数据集太大,或者数据读取时使用了低效的方法,比如单线程读取等。
    • 模型参数设置不当,可能是学习率过小,导致梯度下降速度过慢。 建议参考以下方法进行排查解决:
    • 确认GPU device设置正确。
    • 查看数据读取速度和方法,优化数据预处理和读取方法。
    • 尝试更改模型参数,查看训练速度是否有较大提升。 以下是可能的代码实现:
    • 确认GPU device设置正确。
    import os
    os.environ["CUDA_VISIBLE_DEVICES"] = "0" # 指定使用的GPU设备为第0块GPU
    
    • 优化数据预处理和读取方法。
    import tensorflow as tf
    from tensorflow.data import Dataset
    # 使用TFRecord格式存储数据
    def create_tfrecord_dataset(x, y, out_path):
        writer = tf.io.TFRecordWriter(out_path)
        for i in range(len(x)):
            img_bytes = tf.io.encode_jpeg(x[i]).numpy()
            label = y[i]
            example = tf.train.Example(features=tf.train.Features(feature={
                'image': tf.train.Feature(bytes_list=tf.train.BytesList(value=[img_bytes])),
                'label': tf.train.Feature(int64_list=tf.train.Int64List(value=label))
            }))
            writer.write(example.SerializeToString())
            
        writer.close()
        
    # 读取TFRecord数据
    def parse_fn(example_proto):
        features = {
            'image': tf.io.FixedLenFeature([], tf.string),
            'label': tf.io.FixedLenFeature([], tf.int64),
        }
        features = tf.io.parse_single_example(example_proto, features)
        image = tf.io.decode_jpeg(features['image'], channels=3)
        label = features['label']
        return image, label  
    # 创建TFRecord格式的训练数据集
    trainset = Dataset.from_tensor_slices((train_x, train_y))
    trainset = trainset.map(lambda x, y: tf.numpy_function(parse_fn, [x, y], [tf.uint8, tf.int64]))
    trainset = trainset.shuffle(1000).batch(32)
    
    • 更改模型参数
    from tensorflow import keras
    from keras.optimizers import SGD
    model = create_model()
    opt = SGD(lr=0.01) # 更改学习率为0.01
    model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy'])
    model.fit(trainset, epochs=10, validation_data=testset)
    
    评论

报告相同问题?

问题事件

  • 创建了问题 3月27日

悬赏问题

  • ¥15 大二软件工程基础大题
  • ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
  • ¥15 matlab如何根据图片中的公式绘制e和v的曲线图
  • ¥15 我想用Python(Django)+Vue搭建一个用户登录界面,但是在运行npm run serve时报错了如何解决?
  • ¥15 QQ邮箱过期怎么恢复?
  • ¥15 登录他人的vue项目显示服务器错误
  • ¥15 (标签-android|关键词-app)
  • ¥60 如何批量获取json的url
  • ¥15 comsol仿真压阻传感器
  • ¥15 Python线性规划函数optimize.linprog求解为整数