У меня есть комплексные (входные, выходные) данные, и я хотел обучить полностью сложную сеть, используя керасы в TensorFlow 2.0. Я написал функцию потерь, которая возвращает реальную стоимость, и настроил ее в керас. Точно так же я добавил несколько скрытых функций активации в скрытый слой, и модель начала успешно учиться. Однако, когда я попытался настроить сложный вес и инициализацию смещения в подобной процедуре, это выдает ошибку. Для ясности вот что я пытался сделать.
def initialize_weight(shape, dtype= None):
real = K.random_uniform(shape, dtype = dtype)
imag = K.random_normal(shape, dtype=dtype)
return tf.complex(real,imag)
model_new = Sequential()
model_new.add(Dense(20, input_dim=x_train.shape[0], kernel_initializer = initialize_weight,activation = myrelu))
model_new.add(Dense(10, kernel_initializer = intilialize_weight, activation = myrelu))
model_new.add(Dense(y_train.shape[0], kernel_initializer = initialize_weight, activation = myrelu))
model_new.compile(loss= mse_error, optimizer='adam', metric = 'accuracy')
model_new.summary()
Сообщение об ошибке: * ValueError: Запрошено преобразование Tensor dtype float32 для Tensor с dtype complex64:
Обратите внимание, что активация myrelu и функция потерь mse_error являются пользовательскими функциями. Ошибка только из-за kernel_initializer. Есть ли способ настроить комплексный вес в кератах, пожалуйста? Я действительно ценю любую поддержку в этом. Спасибо !