Я использовал тензор потока 1 для создания комплексных нейронных сетей и был в порядке. Однако я не делал этого в активном режиме, и теперь tenorflow 2 действует мне на нервы. По-видимому, теперь все в керасе, поэтому я попытался реализовать такой слой:
from tensorflow.keras import layers
import tensorflow as tf
class Linear(layers.Layer):
def __init__(self, units=32, input_dim=32):
super(Linear, self).__init__()
w_init = tf.complex(tf.random_normal_initializer(), tf.random_normal_initializer())
self.w = tf.Variable(initial_value=w_init(shape=(input_dim, units)),
trainable=True, dtype=tf.complex64)
def call(self, inputs):
return tf.abs(tf.matmul(inputs, self.w))
x = tf.complex(tf.ones((2, 2)), tf.ones((2, 2)))
linear_layer = Linear(4, 2)
y = linear_layer(x)
print(y)
Однако я получаю сообщение об ошибке:
ValueError: Attempt to convert a value (<tensorflow.python.ops.init_ops_v2.RandomNormal object at 0x7f64daf8ad90>) with an unsupported type (<class 'tensorflow.python.ops.init_ops_v2.RandomNormal'>) to a Tensor.