如何在python中编辑yaml文件?

如何解决如何在python中编辑yaml文件?

首先,我要感谢所有给我答案的人。

我想使用 python 编辑我的 yaml 文件,但我不明白它是如何工作的。

我有一个名为“yolov5s.yaml”的 yaml 文件

# parameters
nc: 80  # number of classes
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.50  # layer channel multiple

# anchors
anchors:
  - [10,13,16,30,33,23]  # P3/8
  - [30,61,62,45,59,119]  # P4/16
  - [116,90,156,198,373,326]  # P5/32

# YOlov5 backbone
backbone:
  # [from,number,module,args]
  [[-1,1,Focus,[64,3]],# 0-P1/2
   [-1,Conv,[128,3,2]],# 1-P2/4
   [-1,C3,[128]],[-1,[256,# 3-P3/8
   [-1,9,[256]],[512,# 5-P4/16
   [-1,[512]],[1024,# 7-P5/32
   [-1,SPP,[5,13]]],False]],# 9
  ]

# YOlov5 head
head:
  [[-1,1]],nn.Upsample,[None,2,'nearest']],[[-1,6],Concat,[1]],# cat backbone P4
   [-1,# 13

   [-1,4],# cat backbone P3
   [-1,# 17 (P3/8-small)

   [-1,14],# cat head P4
   [-1,# 20 (P4/16-medium)

   [-1,10],# cat head P5
   [-1,# 23 (P5/32-large)

   [[17,20,23],Detect,[nc,anchors]],# Detect(P3,P4,P5)
  ]

我只想编辑“锚点”部分。 所以我尝试了这段代码

import yaml

with open('yolov5s.yaml') as f:
    test = yaml.load(f,Loader=yaml.FullLoader)

for k,v in test.items():
    if k == 'anchors':    # anchors_size is list what i got
        v[0] = [anchors_size[0][0],anchors_size[0][1],anchors_size[1][0],anchors_size[1][1],anchors_size[2][0],anchors_size[2][1]]
        v[1] = [anchors_size[3][0],anchors_size[3][1],anchors_size[4][0],anchors_size[4][1],anchors_size[5][0],anchors_size[5][1]]
        v[2] = [anchors_size[6][0],anchors_size[6][1],anchors_size[7][0],anchors_size[7][1],anchors_size[8][0],anchors_size[8][1]]

with open('yolov5s_test.yaml','w') as f:
        yaml.safe_dump(test,f,sort_keys=False)

但我得到了我没想到的结果。

nc: 80
depth_multiple: 0.33
width_multiple: 0.5
anchors:
- - !!python/object/apply:numpy.core.multiarray.scalar
    - &id001 !!python/object/apply:numpy.dtype
      args:
      - f8
      - false
      - true
      state: !!python/tuple
      - 3
      - <
      - null
      - null
      - null
      - -1
      - -1
      - 0
    - !!binary |
      5sMvxp6DKkA=
  - !!python/object/apply:numpy.core.multiarray.scalar
    - *id001
    - !!binary |
      K5qaAB+fheA=
  - !!python/object/apply:numpy.core.multiarray.scalar
    - *id001
    - !!binary |
      TOaqxpwfheA=
  - !!python/object/apply:numpy.core.multiarray.scalar
    - *id001
    - !!binary |
      Pn/D+kcOLUA=
  - !!python/object/apply:numpy.core.multiarray.scalar
    - *id001
    - !!binary |
      V70M9euYLkA=
  - !!python/object/apply:numpy.core.multiarray.scalar
    - *id001
    - !!binary |
      8jK4riH0H0A=
- - !!python/object/apply:numpy.core.multiarray.scalar
    - *id001
    - !!binary |
      nnhc0qL7IEA=
  - !!python/object/apply:numpy.core.multiarray.scalar
    - *id001
    - !!binary |
      nVaoqHv/MEA=
  - !!python/object/apply:numpy.core.multiarray.scalar
    - *id001
    - !!binary |
      MditMIAlL0A=
  - !!python/object/apply:numpy.core.multiarray.scalar
    - *id001
    - !!binary |
      9FUL7PZNJEA=
  - !!python/object/apply:numpy.core.multiarray.scalar
    - *id001
    - !!binary |
      PUM1gUF8PEA=
  - !!python/object/apply:numpy.core.multiarray.scalar
    - *id001
    - !!binary |
      9VsJDl5rI0A=
- - !!python/object/apply:numpy.core.multiarray.scalar
    - *id001
    - !!binary |
      u0BIL83XIkA=
  - !!python/object/apply:numpy.core.multiarray.scalar
    - *id001
    - !!binary |
      hUoHjC8TQUA=
  - !!python/object/apply:numpy.core.multiarray.scalar
    - *id001
    - !!binary |
      H8OdWCXNQ0A=
  - !!python/object/apply:numpy.core.multiarray.scalar
    - *id001
    - !!binary |
      c1ABB59WJEA=
  - !!python/object/apply:numpy.core.multiarray.scalar
    - *id001
    - !!binary |
      Wf1sNPojN0A=
  - !!python/object/apply:numpy.core.multiarray.scalar
    - *id001
    - !!binary |
      g8SAI8mONkA=
backbone:
- - -1
  - 1
  - Focus
  - - 64
    - 3
- - -1
  - 1
  - Conv
  - - 128
    - 3
    - 2
- - -1
  - 3
  - C3
  - - 128
- - -1
  - 1
  - Conv
  - - 256
    - 3
    - 2
- - -1
  - 9
  - C3
  - - 256
- - -1
  - 1
  - Conv
  - - 512
    - 3
    - 2
- - -1
  - 9
  - C3
  - - 512
- - -1
  - 1
  - Conv
  - - 1024
    - 3
    - 2
- - -1
  - 1
  - SPP
  - - 1024
    - - 5
      - 9
      - 13
- - -1
  - 3
  - C3
  - - 1024
    - false
head:
- - -1
  - 1
  - Conv
  - - 512
    - 1
    - 1
- - -1
  - 1
  - nn.Upsample
  - - None
    - 2
    - nearest
- - - -1
    - 6
  - 1
  - Concat
  - - 1
- - -1
  - 3
  - C3
  - - 512
    - false
- - -1
  - 1
  - Conv
  - - 256
    - 1
    - 1
- - -1
  - 1
  - nn.Upsample
  - - None
    - 2
    - nearest
- - - -1
    - 4
  - 1
  - Concat
  - - 1
- - -1
  - 3
  - C3
  - - 256
    - false
- - -1
  - 1
  - Conv
  - - 256
    - 3
    - 2
- - - -1
    - 14
  - 1
  - Concat
  - - 1
- - -1
  - 3
  - C3
  - - 512
    - false
- - -1
  - 1
  - Conv
  - - 512
    - 3
    - 2
- - - -1
    - 10
  - 1
  - Concat
  - - 1
- - -1
  - 3
  - C3
  - - 1024
    - false
- - - 17
    - 20
    - 23
  - 1
  - Detect
  - - nc
    - anchors

有些答案建议使用 ruamel.yaml,但我不明白我该怎么做。

有人给我答案。谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?