精华内容
下载资源
问答
  • 什么PCB背钻? 背钻其实就是控深钻比较特殊的一种,在多层板的制作中,例如12层板的制作,我们需要将第1层连到第9层,通常我们钻出通孔(一次钻),然后陈铜。这样第1层直接连到第12层,实际我们只需要第1层连到第9层...

    一、高速PCB中的过孔设计

    在高速PCB设计中,往往需要采用多层PCB,而过孔是多层PCB 设计中的一个重要因素。PCB中的过孔主要由孔、孔周围的焊盘区、POWER 层隔离区三部分组成。接下来,我们来了解下高速PCB中过孔的问题及设计要求。

    高速PCB中过孔的影响

    高速PCB多层板中,信号从某层互连线传输到另一层互连线就需要通过过孔来实现连接,在频率低于1 GHz时,过孔能起到一个很好的连接作用,其寄生电容、电感可以忽略。当频率高于1 GHz后,过孔的寄生效应对信号完整性的影响就不能忽略,此时过孔在传输路径上表现为阻抗不连续的断点,会产生信号的反射、延时、衰减等信号完整性问题。当信号通过过孔传输至另外一层时,信号线的参考层同时也作为过孔信号的返回路径,并且返回电流会通过电容耦合在参考层间流动,并引起地弹等问题。

    过孔的类型

    过孔一般又分为三类:通孔、盲孔和埋孔。

    f7d1bc2f7f5797423303f92c9f9cce24.png

    盲孔:指位于印刷线路板的顶层和底层表面,具有一定深度,用于表层线路和下面的内层线路的连接,孔的深度与孔径通常不超过一定的比率。

    埋孔:指位于印刷线路板内层的连接孔,它不会延伸到线路板的表面。

    通孔:这种孔穿过整个线路板,可用于实现内部互连或作为元件的安装定位孔。由于通孔在工艺上更易于实现,成本较低,所以一般印制电路板均使用

    高速PCB中的过孔设计

    在高速PCB设计中,看似简单的过孔往往也会给电路的设计带来很大的负面效应。为了减小过孔的寄生效应带来的不利影响,在设计中可以尽量做到:

    (1)选择合理的过孔尺寸。对于多层一般密度的PCB 设计来说,选用0.25mm/0.51mm/0.91mm(钻孔/ 焊盘/ POWER 隔离区)的过孔较好;对于一些高密度的PCB 也可以使用0.20mm/0.46mm/0.86mm 的过孔,也可以尝试非穿导孔;对于电源或地线的过孔则可以考虑使用较大尺寸,以减小阻抗;

    (2)POWER隔离区越大越好,考虑PCB 上的过孔密度,一般为D1=D2+0.41;

    (3)PCB 上的信号走线尽量不换层,也就是说尽量减少过孔;

    (4)使用较薄的PCB有利于减小过孔的两种寄生参数;

    (5)电源和地的管脚要就近过孔,过孔和管脚之间的引线越短越好,因为它们会导致电感的增加。同时电源和地的引线要尽可能粗,以减少阻抗;

    (6)在信号换层的过孔附近放置一些接地过孔,以便为信号提供短距离回路。

    此外,过孔长度也是影响过孔电感的主要因素之一。对用于顶、底层导通的过孔,过孔长度等于PCB厚度,由于PCB层数的不断增加,PCB厚度常常会达到5 mm以上。然而,高速PCB设计时,为减小过孔带来的问题,过孔长度一般控制在2.0mm以内。对于过孔长度大于2.0 mm过孔,通过增加过孔孔径,可在一定程度上提高过孔阻抗连续性。当过孔长度为1.0 mm及以下时,最佳过孔孔径为0.20 mm ~ 0.30 mm。

    bcd999e82341192960b3e4d0bf32e129.png

    二、PCB生产中的背钻工艺

    1.什么PCB背钻?

    背钻其实就是控深钻比较特殊的一种,在多层板的制作中,例如12层板的制作,我们需要将第1层连到第9层,通常我们钻出通孔(一次钻),然后陈铜。这样第1层直接连到第12层,实际我们只需要第1层连到第9层,第10到第12层由于没有线路相连,像一个柱子。

    这个柱子影响信号的通路,在通讯信号会引起信号完整性问题。所以将这个多余的柱子(业内叫STUB)从反面钻掉(二次钻)。所以叫背钻,但是一般也不会钻那么干净,因为后续工序会电解掉一点铜,且钻尖本身也是尖的。所以PCB厂家会留下一小点,这个留下的STUB的长度叫B值,一般在50-150UM范围为好。

    44faa8b2654dedc19dbe7b7c1623725f.png

    2.背钻孔有什么样的优点?

    1)减小杂讯干扰;

    2)提高信号完整性;

    3)局部板厚变小;

    4)减少埋盲孔的使用,降低PCB制作难度。

    3.背钻孔有什么作用?

    背钻的作用是钻掉没有起到任何连接或者传输作用的通孔段,避免造成高速信号传输的反射、散射、延迟等,给信号带来“失真”研究表明:影响信号系统信号完整性的主要因素除设计、板材料、传输线、连接器、芯片封装等因素外,导通孔对信号完整性有较大影响。

    4.背钻孔生产工作原理

    依靠钻针下钻时,钻针尖接触基板板面铜箔时产生的微电流来感应板面高度位置,再依据设定的下钻深度进行下钻,在达到下钻深度时停止下钻。如图二,工作示意图所示

    b01e763fd834c341b1f284ff710b7a94.png

    5.背钻制作工艺流程?

    a、提供PCB,PCB上设有定位孔,利用所述定位孔对PCB进行一钻定位并进行一钻钻孔;

    b、对一钻钻孔后的PCB进行电镀,电镀前对所述定位孔进行干膜封孔处理;

    c、在电镀后的PCB上制作外层图形;

    d、在形成外层图形后的PCB上进行图形电镀,在图形电镀前对所述定位孔进行干膜封孔处理;

    e、利用一钻所使用的定位孔进行背钻定位,采用钻刀对需要进行背钻的电镀孔进行背钻;

    f、背钻后对背钻孔进行水洗,清除背钻孔内残留的钻屑。

    6.如有电路板有孔要求从第14层钻到12层要如何解决呢?

    1)如该板在第11层有信号线,在信号线的两端有通孔连接到元件面和焊锡面,在元件面上将会插装元器件,如下图所示,也就是说,在该线路上,信号的传输是从元件A通过第11层的信号线传递到元件B。

    277651fd1cb9fcc1219ef63cb459c273.png

    2)按第1点所描述的信号传输情况,通孔在该传输线路的作用等同于信号线,如果我们不进行背钻,则信号的传输路线如图五所示。

    dfbd037c7ad0c5c9660274467e1eb3fd.png

    3)从第2点所描述的图中,我们可以看到,在先好传输过程中,焊锡面到11层的通孔段其实并没有起到任何的链接或者传输作用。而这一段通孔的存在则容易造成信号传输的反射、散射、延迟等,因此背钻实际上就是钻掉没有起到任何链接或者传输作用的通孔段,避免造成信号传输的反射、散射、延迟,给信号带来失真。

    由于钻孔深度存在一定的公差控制要求,以及板件厚度公差,我们无法100%满足客户绝对的深度要求,那么对于背钻深度的控制是深一点好还是浅一点好?我们对工艺的看法是宁浅勿深,图六。3519c5665a2681f1087eb310a7ab820a.png

    7.背钻孔板技术特征有哪些?

    1)多数背板是硬板

    2)层数一般为8至50层

    3)板厚:2.5mm以上

    4)厚径比较大

    5)板尺寸较大

    6)一般首钻最小孔径>=0.3mm

    7)外层线路较少,多为压接孔方阵设计

    8)背钻孔通常比需要钻掉的孔大0.2MM

    9)背钻深度公差:+/-0.05MM

    10)如果背钻要求钻到M层,那么M层到M-1(M层的下一层)层的介质厚度最小0.17MM

    8.背钻孔板主要应用于何种领域呢?

    背板主要应用于通信设备、大型服务器、医疗电子、军事、航天等领域。由于军事、航天属于敏感行业,国内背板通常由军事、航天系统的研究所、研发中心或具有较强军事、航天背景的PCB制造商提供;在中国,背板需求主要来自通信产业,现逐渐发展壮大的通信设备制造领域。

    在Allegro中实现背钻文件输出

    1.首先选中背钻Net,定义长度。在菜单栏中点Edit-Properties,打开对话框Edit property,如下图:

    967865c930110b4fbbad8896818e66ea.png

    2.在菜单中点:Manufacturing→NC→ Backdrill Setup and Analysis,如下图:

    fdadc0fa3a32dcdd5a77e5bbb82eafde.png

    3.背钻可以从top层开始,也可以从Bottom层开始。高速信号上的连接管脚和VIA都需要做背钻。设置如下:

    f2ffd9ca9af170191c62b407ab254384.png

    4.钻孔文件如下:

    924471a26744080ca00597020b57217e.png

    5.将背钻钻孔文件和背钻钻孔深度的表格一起打包发给PCB厂,背钻深度表格需手动填写

    a08dcf992b23b8cf19041ffb5fd06fe2.png

    相关的一些属性Properties

    1、BACKDRILL_MAX_PTH_STUB(net):在constraint manager里面需要给背钻的网络赋予BACKDRILL_MAX_PTH_STUB属性,只有设置了属性,软件才会识

    为这个网络需要考虑背钻。在constraintmanager→net→general properties →worksheet→backdrill项,选择需要的项目并单击鼠标右键,在弹出的快捷菜单中选择change命令,输入maximum stub的值即可。Stub的计算原则为top和bottom两面的stub都会被计入到最大的stub长度里面。

    2、BACKDRILL_EXCLUDE属性:定义了这个属性后,相关的目标就不进行背钻,此属性可以赋给symbol,pin,via,甚至可以在建库的时候就附上属性。

    3、BACKDRILL_MIN_PIN_PTH属性:确保最小的通孔金属化的深度

    4、BACKDRILL_OVERRIDE属性:用户自定义backdrill的范围,这也是比较有用的一个方法,尤其是针对结构简单,背钻深度一致的设计。

    5、BACKDRILL_PRESSFIT_CONNECTOR属性:这是针对压接件的设置属性,一般情况下,背钻会识别压接器件,不会从器件面背钻,如果要求两面背钻。

    压接器件必须赋予BACKDRILL_PRESSFIT_CONNECTOR属性。用于压接器件,要求单面或者双面背钻背钻时,指定这个参数后,背钻深度不会进入压接器件必需的有效连接区域。值,其中values=pin contact range,这个值必须从压接器件厂家得到。

    针对背钻的属性都设置完成后,就是对背钻的分析了,启动菜单命令:manufacture→NC backdrill setup and analysis,启动背钻界面分析窗口,选择new pass set,设置一些背钻的参数,分析之后会产生报告,有冲突的地方都会有详细说明。

    如果分析没有问题,那么背钻的设置就全部完成了, 需要在后处理的光绘输出阶段如NC-Drill legend和NC Drill的窗口中选择include backdrill,然后执行生成背钻钻孔孔位图和钻孔文件。

    注意PCB板厂的背钻深度工艺能力需要与厂家沟通。

    6060ac9a5f26c12301d8d4d6cc695d63.gif

    你和大牛工程师之间到底差了啥?

    加入技术交流群,与高手面对面 

    添加微信小助手

    4940daa06ba14a2da8c9144dca680f2c.png

    加入“中国电子网微信群”交流

    8a7d6a3c30114a3e25c901090c3ae1a1.gif

    具体加群详情请戳

    →“中国电子网技术交流群” ←

    展开全文
  • .pth文件与.state文件

    2021-07-08 16:18:02
    .pth、.pt、.pkl以及.state等文件什么区别?2. 两种不同的保存方式2.1 通过state_dict参数来保存和读取模型的权重参数2.1 通过state_dict参数来保存和读取整个模型 1. .pth、.pt、.pkl以及.state等文件什么区别...

    1. .pth、.pt、.pkl以及.state等文件有什么区别?

    通常,在神经网络的训练过程中,会产生.pth、.pt、.pkl以及.state等文件。使用不同的后缀对于保存什么样的模型是没有影响的。在torch.save()函数中,torch只是调用了Python的pickle来完成,而且没有做任何的后缀名判断,因此无论保存成什么后缀都可以。其中保存的都是模型+模型权重参数或者单独的模型权重参数。

    2. 两种不同的保存方式

    2.1 通过state_dict参数来保存和读取模型的权重参数

    其后缀推荐使用.pt或者.pth,但是没有硬性规定。
    在这里插入图片描述
    需要注意的是,load_state_dict()函数需要传进的参数是一个字典对象,并非是PATH对象,因此需要用torch.load(PATH)对其进行反序列化。即不能直接使用load_state_dict(PATH)。对比上面给出的代码。

    2.1 通过state_dict参数来保存和读取整个模型

    在这里插入图片描述

    展开全文
  • .pth文件转.weight文件 任务介绍 首先,.pth是pytorch框架训练模型的常见保存格式,.weight是darknet框架训练和加载模型的扩展名,实现将.pth转为.weight便可以将基于pytorch训练的模型在darknet框架里进行应用,...

    .pth文件转.weight文件

    任务介绍

    首先,.pth是pytorch框架训练模型的常见保存格式,.weight是darknet框架训练和加载模型的扩展名,实现将.pth转为.weight便可以将基于pytorch训练的模型在darknet框架里进行应用,比如作为预训练模型或直接进行检测。要做这件事,首先,咱得整明白下面这些东西:

    • 怎么给参数从.pth文件中正确地拿出来,以及怎么给参数按照.weight文件需求的写进去
    • 权重文件的存储规则:权重文件中哪部分是头文件,哪部分是网络参数,头文件都写了些啥;
    • 网络参数的存储规则:网络中都有哪些模块有参数,一个模块中各个参数的存储顺序是啥,不同模块之间存储顺序是啥等等

    前期查阅的资料

    • torch.load可以解析.pth文件,得到参数存储的键值对,这样就可以直接获取到对应层的权重,随心所欲进行转换
    net = torch.load(src_file,map_location=torch.device('cpu'))
    

    得到的输出如下所示:
    在这里插入图片描述

    • 一个讲了.weight文件的头文件应该咋写才能被darknet读取,链接
    • 一个指明了转换的前进方向(.weight文件参数部分都是谁的参数,每个模块写的顺序是什么),链接
      在这里插入图片描述
    • 猜测darknet按照config文件进行权重读取,所以写.weight文件的时候应该和config保持一致

    代码及注释

    这里实现了对official_yolov3_weights_pytorch.pth的转换,这个权重是在pytorch框架中用YOLOv3算法训练的模型的权重,还特地torch.load了一下,确保参数是可以和darknet里yolov3的config文件对上的,这样转换之后的权重就可以很方便的在darknet中得到验证。

    做这个实验就是为了验证现有方法对卷积核等权重导入的顺序(NCHW到底拉成一维向量是怎么拉的)是否正确,主要是也没找到明确的关于.weight文件中对于卷积核权重的存储顺序的说明,生怕现有的转换代码出现偏差,所以想着验证一下。验证的思路也比较蠢,就是想着找个训练的比较好的.pth文件,然后转换为.weight文件,然后在darknet框架中做个测试,如果检测结果不错,那证明当前的转换的代码没啥问题。

    下面就贴上代码,这只实现了针对yolov3的权重转换,但是思路是一样的,改成resnet或其他网络结构只需要把load的顺序配合着darknet中的config来写就行。

    明白这几点就可以:
    1,torch.load()可以解析.pth中存储的参数键值对,还是按照顺序存储的,在一定程度上可以反映出网络结构
    2,config中带有bn的conv,其参数写入.weight文件时的顺序:
    ‘bn1.bias’,‘bn1.weight’,‘bn1.running_mean’,‘bn1.running_var’,‘conv1.weight’
    3,config中不带bn的conv,其参数写入.weight文件时的顺序:
    ‘conv.bias’,‘conv.weight’
    4,对于卷积核的权重,其大小为NxCxHxW,从.pth中索引出conv_weight之后直接借助numpy的tofile()来实现拉成一维向量即可匹配.weight文件正确的卷积核参数存储顺序,像这样conv_weight.data.cpu().numpy().tofile(fp)
    5,draknet是按照config文件写的顺序来导入权重的,route,shortcut这些层不影响导入顺序

    import torch
    import numpy as np
    
    # list the path of the two kind of weight file below
    src_file = '/disk2/pretrained_model/official_yolov3_weights_pytorch.pth'
    dst_file = '/disk2/pretrained_model/yolov3.weight'
    
    
    ####################################################### structure of yolov3 ######################################################
    # backbone part
    backbone = ['module.backbone.',
                'module.backbone.layer1.','module.backbone.layer1.residual', #1
                'module.backbone.layer2.','module.backbone.layer2.residual', #2
                'module.backbone.layer3.','module.backbone.layer3.residual', #8
                'module.backbone.layer4.','module.backbone.layer4.residual', #8
                'module.backbone.layer5.','module.backbone.layer5.residual'  #4
                ]            
    num_of_residual = {'layer1':1,'layer2':2,'layer3':8,'layer4':8,'layer5':4}
    ds_convbn = ['ds_bn.bias','ds_bn.weight','ds_bn.running_mean','ds_bn.running_var','ds_conv.weight']
    convbn1 = ['bn1.bias','bn1.weight','bn1.running_mean','bn1.running_var','conv1.weight']
    convbn2 = ['bn2.bias','bn2.weight','bn2.running_mean','bn2.running_var','conv2.weight']
    
    # head part
    embeddings = ['module.embedding0.','module.embedding1_cbl.','module.embedding1.','module.embedding2_cbl.','module.embedding2.']
    convbn = ['bn.bias','bn.weight','bn.running_mean','bn.running_var','conv.weight']
    conv = ['conv_out.bias','conv_out.weight']
    ####################################################### load the .pth file #######################################################
    
    net = torch.load(src_file,map_location=torch.device('cpu'))
    
    #################################################### write the .weight files #####################################################
    
    # open a empty file and start to write
    fp = open(dst_file, "wb")
    
    # write head infomation into the file
    header_info = np.array([0, 2, 0, 32013312, 0], dtype=np.int32)
    header_info.tofile(fp)
    
    # write the backbone part
    for layer in backbone:
        if layer.split('.')[-2] == 'backbone':
            for i in convbn1:
                content = net[layer+i]
                content.data.cpu().numpy().tofile(fp)
        if layer.split('.')[-2] == 'layer1':
            if layer.split('.')[-1] =='':
                # load the downsample part
                for i in ds_convbn:
                    content = net[layer+i]
                    content.data.cpu().numpy().tofile(fp)
            else:
                # load the residual part
                for j in range(num_of_residual['layer1']):
                    layer_new = layer+'_'+str(j)+'.'
                    for i in convbn1:
                        content = net[layer_new+i]
                        content.data.cpu().numpy().tofile(fp)
                    for i in convbn2:
                        content = net[layer_new+i]
                        content.data.cpu().numpy().tofile(fp)
        if layer.split('.')[-2] == 'layer2':
            if layer.split('.')[-1] =='':
                # load the downsample part
                for i in ds_convbn:
                    content = net[layer+i]
                    content.data.cpu().numpy().tofile(fp)
            else:
                # load the residual part
                for j in range(num_of_residual['layer2']):
                    layer_new = layer+'_'+str(j)+'.'
                    for i in convbn1:
                        content = net[layer_new+i]
                        content.data.cpu().numpy().tofile(fp)
                    for i in convbn2:
                        content = net[layer_new+i]
                        content.data.cpu().numpy().tofile(fp)
        if layer.split('.')[-2] == 'layer3':
            if layer.split('.')[-1] =='':
                # load the downsample part
                for i in ds_convbn:
                    content = net[layer+i]
                    content.data.cpu().numpy().tofile(fp)
            else:
                # load the residual part
                for j in range(num_of_residual['layer3']):
                    layer_new = layer+'_'+str(j)+'.'
                    for i in convbn1:
                        content = net[layer_new+i]
                        content.data.cpu().numpy().tofile(fp)
                    for i in convbn2:
                        content = net[layer_new+i]
                        content.data.cpu().numpy().tofile(fp)
        if layer.split('.')[-2] == 'layer4':
            if layer.split('.')[-1] =='':
                # load the downsample part
                for i in ds_convbn:
                    content = net[layer+i]
                    content.data.cpu().numpy().tofile(fp)
            else:
                # load the residual part
                for j in range(num_of_residual['layer4']):
                    layer_new = layer+'_'+str(j)+'.'
                    for i in convbn1:
                        content = net[layer_new+i]
                        content.data.cpu().numpy().tofile(fp)
                    for i in convbn2:
                        content = net[layer_new+i]
                        content.data.cpu().numpy().tofile(fp)
        if layer.split('.')[-2] == 'layer5':
            if layer.split('.')[-1] =='':
                # load the downsample part
                for i in ds_convbn:
                    content = net[layer+i]
                    content.data.cpu().numpy().tofile(fp)
            else:
                # load the residual part
                for j in range(num_of_residual['layer5']):
                    layer_new = layer+'_'+str(j)+'.'
                    for i in convbn1:
                        content = net[layer_new+i]
                        content.data.cpu().numpy().tofile(fp)
                    for i in convbn2:
                        content = net[layer_new+i]
                        content.data.cpu().numpy().tofile(fp)
    
    # write the head part                    
    for embedding in embeddings:
        if embedding.split('_')[-1] == 'cbl.':
            for i in convbn:
                content = net[embedding+i]
                content.data.cpu().numpy().tofile(fp)
        else:
            for j in range(6):
                embedding_new = embedding+str(j)+'.'
                for i in convbn:
                    content = net[embedding_new+i]
                    content.data.cpu().numpy().tofile(fp)
            for i in conv:
                content = net[embedding+i]
                content.data.cpu().numpy().tofile(fp)    
    
    fp.close()
    # finish !
    

    把转换之后的权重使用darknet框架进行测试

    ./darknet detect   cfg/yolov3.cfg   pretrain_model/yolov3.weight   data/dog.jpg
    

    得到如下的检测结果
    你看看!这狗多狗!这说明我们转换的权重是么得问题的~
    在这里插入图片描述
    目前只能说是针对模型来写转换的代码,而且因为.weight文件不存储网络结构,只能配合config文件加载权重,所以还不知道如果想导入的模块不连续或者不是从头开始该如何实现一次性导入,可能如果是想转换权重来做预训练可能还不太有这个需求

    猜的不一定对,要是有更好的转换办法还麻烦评论区交流交流,互相学习呀~

    展开全文
  • CenterNet (Objects as Points) 作者在其github项目中提供了多种训练后的模型文件下载(google drive),但目前下载受限,提供自己用的三个文件(multi_pose_dla_3x.pth、ctdet_coco_dla_2x.pth、ddd_3dop.pth)百度...

    CenterNet (Objects as Points) 作者在其github项目中提供了多种训练后的模型文件下载(google drive),但目前下载受限,提供自己用的三个文件(multi_pose_dla_3x.pth、ctdet_coco_dla_2x.pth、ddd_3dop.pth)百度网盘下载:CenterNet模型文件 提取码:v9h2

    展开全文
  • pytorch怎么读取.pth文件,以及怎么将torch的.pth文件转化为bin文件进行保存。 import torch import numpy as np path_in="in.pth" path_out="out.pth" #读取文件 #若安装的pytorch是带Cuda的版本,cuda不能用,则...
  • 今天小编就为大家分享一篇Pytorch .pth权重文件的使用解析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • pytorch解析.pth模型文件

    千次阅读 2020-02-26 10:13:57
    pytorch训练出来的模型文件是.pth文件。 里面保存的是训练好的模型的参数,比如:权值(weight),偏置(bias)等。 .pth文件里面的数据结构类型是:collections.OrderedDict(有序字典) 解析pytorch模型文件的demo...
  • Python中.pth文件的作用

    万次阅读 2018-04-23 18:11:36
    Python在遍历已知的库文件目录过程中...python中有一个.pth文件,该文件的用法是:首先xxx.pth文件里面会书写一些路径,一行一个。将xxx.pth文件放在特定位置,则可以让python在加载模块时,读取xxx.pth中指定的路径...
  • 关于python 导入包 .pth文件

    万次阅读 2019-01-25 17:44:29
    Python在遍历已知的库文件目录过程中,...python中有一个.pth文件,该文件的用法是: 首先xxx.pth文件里面会书写一些路径,一行一个。 将xxx.pth文件放在特定位置,则可以让python在加载模块时,读取xxx.pth中指...
  • pytorch保存.pth文件

    2021-09-11 10:55:05
    只保存权重文件 torch.save(model.state_dict(), "model.pth") 保存整个模型 torch.save(model, "my_model.pth")
  • pytorch加载.pth文件

    2021-09-09 14:55:15
    pytorch加载.pth文件 1.创建一个新的python文件 2.键入代码,运行。 注意: profile后面为所要查看的pth文件地址。 代码: import torch pthfile = r’D:\deep reinforcemnt learning\PRUNING FILTERS FOR EFFICIENT...
  • pytroch官网提供的预训练模型:resnet18:resnet18-5c106cde.pth和resnet:resnet101-5d3b4d8f.pth(两个文件打包在一起)
  • [Pytorch].pth转.pt文件

    千次阅读 2020-07-06 10:55:52
    Pytorch的模型文件一般会保存为.pth文件,但是其C++接口一般读取的是.pt文件,因此,C++在调用Pytorch训练好的模型文件的时候就需要进行一个转换,转换为.pt文件,才能够读取。 所以在转换的时候,首先就需要先将...
  • python .pth 文件 和 site 模块 .pth 文件  该文件位于 python 的 /Lib/site-packages 目录下,可以有多个,在 .pth 文件中可以把其它目录添加到 sys.path 中,可以是相对路径和绝对路径,例如: #注释只能单独...
  • pytorch中保存的模型文件.pth深入解析

    万次阅读 多人点赞 2019-09-12 15:22:39
    本次来解析一下我们通常保存的模型文件 .pth 文件到底内部是什么? 一、.pth 文件详解 在pytorch进行模型保存的时候,一般有两种保存方式,一种是保存整个模型,另一种是只保存模型的参数。 ...
  • 扩展为whey以支持.pth文件。 文件 测验 聚酰亚胺 水蟒 活动 质量检查 其他 安装 可以从PyPI或Anaconda安装whey-pth 。 要使用pip安装: $ python -m pip install whey-pth 要安装conda : 首先添加所需的频道 $ ...
  • 【Pytorch】.pth权重文件解析

    千次阅读 热门讨论 2019-04-01 20:54:48
    pytorch最后的权重文件是....首先查看.pth文件中的内容,我们发现它其实是一个字典格式的文件 其中保存了optimizer和scheduler,所以再次加载此文件时会使用之前的学习率。 我们只需要权重,也就是model部分,将...
  • rename -n 's/t_/t_0/' *_[0-9][0-9][0-9][0-9][0-9].pth.tar rename后接一个正则表达式,是perl语法规则的,‘s/’ 是正则匹配的开始的意思,然后第一个/和第二个/之间的部分是被匹配内容,第二个/和第三个/...
  • 用 .pth 文件附加 Python 模块搜索路径

    千次阅读 2018-11-27 05:38:35
    上一篇 Python 的模块搜索...可以简单的用 PYTHONPATH 环境变量前向添加,这儿将要说的是用 .pth 文件的方式。也可由此进一步理解 Python 依赖管理工具,像 virtualenv 等的工作原理。 .pth 文件名是什么...
  • 通常的做法是在程序启动的时候,往sys.path里面增加这个目录,但是这样做非常的繁琐,最简单的办法就是使用.pth文件。 Python 在遍历已知的库文件目录过程中,如果见到一个 .pth 文件,就会将文件中所记录的路径...
  • Python在遍历已知的库文件目录过程中,...python中有一个.pth文件,该文件的用法是: 首先xxx.pth文件里面会书写一些路径,一行一个。 将xxx.pth文件放在特定位置,则可以让python在加载模块时,读取xxx.pth中指...
  • 保存.pth文件时只保存了权重,没有保存模型本身,用了下边的命令 torch.save(model_int8.state_dict(), './alex_net_int8.pth') //model_int8是我的模型名称,后边是保存路径 对于.pth文件中参数及参数名称的修改...
  • pthfile = r'D:\LY\DLmodify\3Deblur_cnn\Deblur_cvpr\document\3test\modelDict\test_pycharm.pth' # .pth文件地址 net = torch.load(pthfile) #print(type(net)) # 类型是 dict print(len(net)) # 长度为 8,即...
  • python之使用.pth文件导入自定义模块

    千次阅读 2019-07-12 16:40:11
    首先创建一个测试包 例如:DataSync 获取系统的模块路径 ...新建一个.pth文件,例如pckPath.pth 里边写入自定义模块的路径 /home/python/vavAnalysis/apps 之后便可直接导入该测试包 ...
  • damnpth找到.pth文件,并从文件中删除了疯狂的路径重排序部分。 如果可以,它将修补setuptools代码以停止添加此路径重新排序的内容。 用法: pip install damnpth damnpth 原则上,这不应该破坏您的环境,但是...
  • efficientdet-d3.pth

    2020-05-12 16:47:16
    efficientdet-d3.pth 权重文件
  • ctdet_coco_hg.pth ctdet_coco_dla_2x.pth ctdet_coco_resdcn101.pth ctdet_coco_resdcn18.pth multi_pose_dla_3x.pth dla34-ba72cf86.pth resnet101-5d3b4d8f.pth resnet18-5c106cde.pth 点击 模型 tr6e ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,210
精华内容 4,484
关键字:

.pth是什么文件