可以在CNTK ElementSelect中混合数据类型吗?

时间:2019-01-22 05:33:14

标签: c# cntk

我正在尝试使用CNTK(在C#中)执行以下操作:

 myAnalyzer.getAverage();

期望与a = ElementSelect(x, y, z); 等效。但是,由于各种原因,a[i] = (x[i] != 0 ? y[i] : z[i])x,而Int8y的类型是z。 CNTK抛出异常:

Double

这是真的,但令我感到惊讶的是,谓词Primitive op 'Select' passed operands 'Output('Block34_Output_0', [?], [*, #]), Output('Plus47_Output_0', [?], [*, #]), Constant('Constant5', [], [])' with different DataTypes 'Int8' and 'Double'. 与值xy之间存在“相同类型”约束。

有没有解决的办法?非常感谢您的任何帮助。

1 个答案:

答案 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。