python中一个文件(A.py)怎么调用另一个文件(B.py)中定义的类AA详解和示例

本文主要讲解python文件中怎么调用另外一个py文件中定义的类,将通过代码和示例解读,帮助大家理解和使用。

目录

代码

B.py

如在文件B.py,定义了类别Bottleneck,其包含卷积层、正则化和激活函数层,主要对输入图像进行处理。但没有读取图像等代码。

python 复制代码
from torch import nn

def autopad(k, p=None, d=1):  # kernel, padding, dilation
    # Pad to 'same' shape outputs
    if d > 1:
        k = d * (k - 1) + 1 if isinstance(k, int) else [d * (x - 1) + 1 for x in k]  # actual kernel-size
    if p is None:
        p = k // 2 if isinstance(k, int) else [x // 2 for x in k]  # auto-pad
    return p

class Conv(nn.Module):
    # Standard convolution with args(ch_in, ch_out, kernel, stride, padding, groups, dilation, activation)
    default_act = nn.SiLU()  # default activation

    def __init__(self, c1, c2, k=3, s=2, p=None, g=1, d=1, act=True):
        super().__init__()
        self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p, d), groups=g, dilation=d, bias=False)
        self.bn = nn.BatchNorm2d(c2)
        self.act = self.default_act if act is True else act if isinstance(act, nn.Module) else nn.Identity()

    def forward(self, x):
        return self.act(self.bn(self.conv(x)))

    def forward_fuse(self, x):
        return self.act(self.conv(x))

class Bottleneck(nn.Module):
    # Standard bottleneck
    def __init__(self, c1, c2, shortcut=True, g=1, e=0.5):  # ch_in, ch_out, shortcut, groups, expansion
        super().__init__()
        c_ = int(c2 * e)  # hidden channels
        self.cv1 = Conv(c1, c_, 1, 1)
        self.cv2 = Conv(c_, c2, 3, 2, g=g)
        self.add = shortcut and c1 == c2

    def forward(self, x):
        return x + self.cv2(self.cv1(x)) if self.add else self.cv2(self.cv1(x))

A.py

文件A.py,在此部分,加载一幅图像并对其进行卷积处理。在代码中,没有卷积等层的定义,通过调用B.py中定义的类进行。

python 复制代码
import B
from PIL import Image
from torchvision import transforms
import math
if __name__ == '__main__':
    image = Image.open("../11111.jpg")
    transform = transforms.Compose([
        transforms.ToTensor()
    ])

    # 对图像应用转换操作
    input_image = transform(image)
    input_image = input_image.unsqueeze(0)
    CBR=B.Bottleneck(3,64)
    x=CBR(input_image )
    print(x.shape)

把上面代码保存到自己本地,再把图像路径换成的图像路径,运行得到打印机结果为:

调用过程

在上面A.py的代码中,先通过import B导入B.py文件,之后通过CBR=B.Bottleneck(3,64)关联和初始化定义的Bottleneck。最后使用x=CBR(input_image )进行使用即可。

注意,本文中用的示例是A.py和B.py在同一文件夹中,如不在同一文件夹需要添加路径。

相关推荐
码云骑士1 分钟前
116-Python调用GPT-4V分析图片-Base64编码-多图-JSON结构化输出
开发语言·python·json
程序员cxuan1 分钟前
一招让你的 Claude 被封了也能用
人工智能·后端·程序员
赛逸会展s3 分钟前
2027北京AI健康科技与智慧医疗展6月举办:不是秀场是成交现场
人工智能·科技
Hello_Damon_Nikola3 分钟前
TPA3116D2DADR从入门到精通
人工智能·单片机·嵌入式硬件·物联网
Dachui_11223 分钟前
飞牛 NAS 部署 Hermes AI Agent + ZeroNews 内网穿透,实现远程可管理的 AI 助手
人工智能·ai·远程工作·内网穿透
老郑聊AI业财智造5 分钟前
TensorFlow 技术架构与源码分析
人工智能·python·深度学习·架构·tensorflow·软件工程
民乐团扒谱机6 分钟前
【微科普】压缩感知(CS):违反了奈奎斯特采样定理?不先采集也能还原信号?大白话讲透稀疏采样、L1重建与OMP,一文吃透附代码
python·神经网络·线性代数·算法·数学建模·压缩感知·奈奎斯特
海云安7 分钟前
AI安全体系化治理:管理制度、技术管控与运营评估如何闭环
人工智能·安全
m4Rk_8 分钟前
【论文阅读】Agent 记忆机制(49):MemCoE——先学习如何组织记忆,再学习具体记住什么
论文阅读·人工智能·学习·开源·github
承渊政道8 分钟前
【Python编程—从入门到实践】(Python操作列表深度教程:循环、切片、元组与代码风格)
开发语言·python·pycharm·列表·元组·切片