Я пытаюсь использовать пользовательскую функцию с моделью нейронной сети 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