使用mxnet mod定义自定义函数

2024-09-30 03:24:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用一个mxnet神经网络模型的自定义函数。这个自定义函数应该创建最后一层激活向量的模糊表示。你知道吗

我不知道如何使这项工作,因为常规的python函数是以命令式方式工作的,而mxnet是以声明式方式(即符号)工作的。当我尝试将我的函数用于已定义的模型时,它会引发一个异常,因为在模型声明期间参数是一个符号而不是一个实数组。你知道吗

关于如何使我的自定义函数以声明方式工作(例如mxnet.sym.concat例如)?你知道吗

这是我的自定义函数定义:

def getFuzzyRep(arr):
    fuzzRep = ""
    x_qual = np.arange(0, 11, 0.1)
    qual_lo = fuzz.trimf(x_qual, [0, 0, 0.5])
    qual_md = fuzz.trimf(x_qual, [0, 0.5, 1.0])
    qual_hi = fuzz.trimf(x_qual, [0.5, 1.0, 1.0])
    FuzzVals=["Low","Medium","High"]
    i =0
    for val in arr:
        if i == 0:
            fuzzRep = FuzzVals[np.argmax([fuzz.interp_membership(x_qual, qual_lo, val),fuzz.interp_membership(x_qual, qual_md, val),fuzz.interp_membership(x_qual, qual_hi, val)])]
        else:
            fuzzRep = fuzzRep +","+FuzzVals[np.argmax([fuzz.interp_membership(x_qual, qual_lo, val),fuzz.interp_membership(x_qual, qual_md, val),fuzz.interp_membership(x_qual, qual_hi, val)])]
        i+=1
    return fuzzRep 

Tags: 函数模型声明lonp方式valmd
1条回答
网友
1楼 · 发布于 2024-09-30 03:24:09

您需要将自定义函数实现为一个自定义的HybridBlock,并且只使用来自后端的方法(F方法的hybrid_forward参数,您需要重写它)。如果您这样做,MXNet将为您处理命令式/声明式的差异。你知道吗

看看here(更高级的描述)和here(更详细的描述)。你知道吗

相关问题 更多 >

    热门问题