Итак, у меня есть код для обучения нейронной сети, и потеря имеет отрицательное значение SINR для системы с несколькими группами (G) и несколькими пользователями (K). Однако, когда я вычисляю sinr, происходит что-то странное.
Итак, формула SINR такова:
def find_sinr_over_group(H, W):
sigma2 = 1
# Compute the Hermitian transpose (conjugate transpose) of W
W_H = tf.transpose(tf.math.conj(W), perm=[0, 2, 1]) # Shape: (batch_size, G, M)
# Compute Signal Power for each user in each group
signal_power = []
for g in range(W.shape[-1]): # Loop over each group g
w_h_g = W_H[:, g, :] # Shape: (batch_size, M)
h_g = H[:, :, :, g] # Shape: (batch_size, M, K)
# Matrix multiplication to compute signal power
s = tf.matmul(w_h_g[:, tf.newaxis, :], h_g) # Shape: (batch_size, 1, K)
s = tf.squeeze(s, axis=1) # Shape: (batch_size, K)
signal_power.append(s)
signal_power = tf.stack(signal_power, axis=-1) # Shape: (batch_size, K, G)
signal_power = tf.math.real(tf.math.multiply(signal_power, tf.math.conj(signal_power)))
# signal_power = tf.math.abs(signal_power) ** 2 # Take the absolute square
# Compute Total Power for each user in each group
total_power = []
for g in range(W.shape[-1]): # Loop over each group g
w_h = W_H[:, :, :] # Shape: (batch_size, G, M)
h_g = H[:, :, :, g] # Shape: (batch_size, M, K)
# Matrix multiplication to compute total power
t = tf.matmul(w_h, h_g) # Shape: (batch_size, G, K)
t = tf.math.real(tf.math.multiply(t, tf.math.conj(t)))
# t = tf.math.abs(t) ** 2 # Shape: (batch_size, G, K)
total_power.append(tf.reduce_sum(t, axis=1)) # Sum across G to get (batch_size, K)
total_power = tf.stack(total_power, axis=-1) # Shape: (batch_size, K, G)
# Isolate the Interference Power by subtracting Signal Power from Total Power
interference_power = total_power - signal_power # Shape: (batch_size, K, G)
# Add noise power
interference_plus_noise_power = interference_power + sigma2 # Add noise
# Compute SINR
sinr = signal_power / interference_plus_noise_power # Shape: (batch_size, K, G)
return sinr
Но проблема в том, что мощность помех в некоторых случаях отрицательна. Что численно невозможно, поскольку мощность сигнала — это всего лишь частный случай полной мощности. Кто-нибудь знает, почему это происходит и как это исправить?
Как видите, сначала я использовал функцию tf.abd, а затем повысил в степени 2. Я подумал, что это может быть Может быть проблема с прессом, поэтому я попробовал набрать текст с помощью конъюгата, чтобы получить мощность сигнала. Но у меня все еще есть эта проблема.
Итак, у меня есть код для обучения нейронной сети, и потеря имеет отрицательное значение SINR для системы с несколькими группами (G) и несколькими пользователями (K). Однако, когда я вычисляю sinr, происходит что-то странное. Итак, формула SINR такова: [img] https://latex.codecogs.com/svg.image?%5Ctext%7BSINR%7D_%7Bik%7D=%5Cfrac%7B%7C%5Cmathbf%7Bw%7D_i%5EH%5Cmathbf%7Bh%7D_%7Bik%7D% 7C%5E2%7D%7B%5Csum_%7Bj%5Cneq%20i%7D%5EG%7C%5Cmathbf%7Bw%7D_j%5EH%5Cmathbf%7Bh%7D_%7Bik%7D%7C%5E2+%5Csigma%5E2%7D[/img]
А это мой код: [code]def find_sinr_over_group(H, W):
sigma2 = 1 # Compute the Hermitian transpose (conjugate transpose) of W W_H = tf.transpose(tf.math.conj(W), perm=[0, 2, 1]) # Shape: (batch_size, G, M)
# Compute Signal Power for each user in each group signal_power = [] for g in range(W.shape[-1]): # Loop over each group g w_h_g = W_H[:, g, :] # Shape: (batch_size, M) h_g = H[:, :, :, g] # Shape: (batch_size, M, K)
# Matrix multiplication to compute signal power s = tf.matmul(w_h_g[:, tf.newaxis, :], h_g) # Shape: (batch_size, 1, K) s = tf.squeeze(s, axis=1) # Shape: (batch_size, K) signal_power.append(s)
# Compute Total Power for each user in each group total_power = [] for g in range(W.shape[-1]): # Loop over each group g w_h = W_H[:, :, :] # Shape: (batch_size, G, M) h_g = H[:, :, :, g] # Shape: (batch_size, M, K)
# Matrix multiplication to compute total power t = tf.matmul(w_h, h_g) # Shape: (batch_size, G, K) t = tf.math.real(tf.math.multiply(t, tf.math.conj(t))) # t = tf.math.abs(t) ** 2 # Shape: (batch_size, G, K) total_power.append(tf.reduce_sum(t, axis=1)) # Sum across G to get (batch_size, K)
# Isolate the Interference Power by subtracting Signal Power from Total Power interference_power = total_power - signal_power # Shape: (batch_size, K, G)
return sinr [/code] Но проблема в том, что мощность помех в некоторых случаях отрицательна. Что численно невозможно, поскольку мощность сигнала — это всего лишь частный случай полной мощности. Кто-нибудь знает, почему это происходит и как это исправить? Как видите, сначала я использовал функцию tf.abd, а затем повысил в степени 2. Я подумал, что это может быть Может быть проблема с прессом, поэтому я попробовал набрать текст с помощью конъюгата, чтобы получить мощность сигнала. Но у меня все еще есть эта проблема.
У меня есть код для обучения нейронной сети, и потеря имеет отрицательное значение SINR для системы с несколькими группами (G) и несколькими пользователями (K). Однако, когда я вычисляю sinr, происходит что-то странное.
формула SINR такова:
https...
Скажи, что я хочу написать режиму для сопоставления текста, подобного «Таблице 1.1-1 ABCD» / «Рисунок 1: EFG» / «Изображение 1.1 Hijk LMN», но отказ «Таблица 1.1: ABCD EFG», что означает первую букву «Таблица» / «Фигура» ... должен быть заявленным,...
Скажи, что я хочу написать режиму для сопоставления текста, подобного «Таблице 1.1-1 ABCD» / «Рисунок 1: EFG» / «Изображение 1.1 Hijk LMN», но отказ «Таблица 1.1: ABCD EFG», что означает первую букву «Таблица» / «Фигура» ... должен быть заявленным,...
Сейчас я пытаюсь построить модель для своего проекта. Мне нужно построить нейронную сеть LSTM-CNN для моих тензорных данных. Я прочитал документы о tensorflow.net, однако, по моему мнению, слои LSTM не раскрыты должным образом. Я пытаюсь построить...