【问题标题】:Complex input/output in tensorflow/keras neural networks is possible?tensorflow/keras 神经网络中的复杂输入/输出是可能的吗?
【发布时间】:2020-07-03 08:23:12
【问题描述】:

我听说可以为使用 tensorflow/keras 构建的神经网络提供复杂数据,并获得指定每个层的“dtype”= tf.complex64(或类似)的复杂输出。

X = K.Input(shape = (n_taps,1), dtype = tf.complex64)
fc1 = K.layers.LSTM(n_fc1,activation="tanh",dtype = tf.complex64)  (X)

每个单层的声明不会给出错误,但调用第二层作为参数给出第一层(我的意思是第二行)会给出以下预期错误:

TypeError: 'MatMul' Op 的输入 'b' 的 float32 类型与参数 'a' 的 complex64 类型不匹配。

我不明白这种网络是否可行。 有没有人对此有更多的信息? 提前致谢

【问题讨论】:

    标签: python tensorflow keras neural-network complex-numbers


    【解决方案1】:

    这是因为K.layers.LSTM 不支持tf.complex64 类型。您需要自己实现该层。你应该从继承tf.keras.layers.Layer 开始,你可以在tf.keras.layers.Layer 的文档中找到一个例子。该示例称为SimpleDense 层。

    【讨论】:

    • 非常感谢!你知道我可以用任何已经实现的层来代替已经支持 tf.complex64 的 LSTM 层吗?
    • 不,不是。让我们试试别的,为什么你的数据很复杂?复数有实部和虚部。那么为什么不直接用shape=(n_taps, 2) 来表示您的数据呢? 2 用于实部和虚部。
    • 是的,我已经这样做了,而且效果很好。我只是想提高我的成绩。非常感谢,现在我的思路更清晰了。
    猜你喜欢
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 2019-03-11
    • 2019-07-14
    • 2020-12-05
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    相关资源
    最近更新 更多