Мой системный конвейер выглядит примерно так:
Код: Выделить всё
import tensorflow as tf
# input: real-valued bits
bits = tf.random.uniform([batch_size, num_bits], 0, 2, dtype=tf.int32)
# f1: Neural mapper (real → complex)
symbols = neural_mapper(bits) # output: complex64
# f2: Channel (complex → complex)
received = OFDMChannel(symbols) # output: complex64
# f3: Neural demapper (complex → real)
llrs = neural_demapper(received) # output: float32
# loss: real-valued
loss = tf.nn.sigmoid_cross_entropy_with_logits(labels=bits, logits=llrs)
- Как работает правило цепочки, когда мы смешиваем сложные и реальные домены? Правило математической цепочки, которое я изучил, предполагает, что все находится в одном домене.
- Что происходит на границах домена? Например:
- Когда нейронный_маппер выводит сложные значения из реальных входных данных
- Когда такие операции, как tf.abs(), tf.angle() или tf.real() конвертировать сложное в реальное
- Когда потеря распространяется обратно на слои с комплексными значениями
- Выполняет ли TensorFlow:
- Автоматическое преобразование всего в реальное (например, обработка сложного сигнала как двух реальных каналов)?
- Использовать какую-либо форму комплексного дифференцирования (производные Виртингера)? Но если да, то обрабатывает ли он реальные и сложные типы операций по-разному?
Подробнее здесь: https://stackoverflow.com/questions/798 ... lex-functi