我正在尝试使用CNTK(在C#中)执行以下操作:
myAnalyzer.getAverage();
期望与a = ElementSelect(x, y, z);
等效。但是,由于各种原因,a[i] = (x[i] != 0 ? y[i] : z[i])
是x
,而Int8
和y
的类型是z
。 CNTK抛出异常:
Double
这是真的,但令我感到惊讶的是,谓词Primitive op 'Select' passed operands 'Output('Block34_Output_0', [?], [*, #]), Output('Plus47_Output_0', [?], [*, #]), Constant('Constant5', [], [])'
with different DataTypes 'Int8' and 'Double'.
与值x
和y
之间存在“相同类型”约束。
有没有解决的办法?非常感谢您的任何帮助。
答案 0 :(得分:0)
对于cntk的python API(v2.6),以下工作有效:
a = C.input_variable(5)
b = C.input_variable(5)
c = C.element_select(a, b, b)
n = np.random.random((3, 5)).astype(int)
m = np.random.random((3, 5)).astype(np.float32)
print(c.eval({a: n, b: m}))
如果C#不允许,那么我建议您将int转换为float。