我试图使用一个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
您需要将自定义函数实现为一个自定义的
HybridBlock
,并且只使用来自后端的方法(F
方法的hybrid_forward
参数,您需要重写它)。如果您这样做,MXNet将为您处理命令式/声明式的差异。你知道吗看看here(更高级的描述)和here(更详细的描述)。你知道吗
相关问题 更多 >
编程相关推荐