|
- import numpy as np
- import scipy.io as scio
- import mindspore.dataset as ds
- import os
- from mindspore import Tensor
- from mindspore import dtype
- from FullConnectedNetwork import Fnet
- from mindspore import context
-
-
- k = 8
- n = 16
-
- train_SNR_dB = 1 # 更改信噪比
- Eb = 1 # the average bit energy of BPSK modulation
- train_SNR = 10 ** (train_SNR_dB / 10) # transform dB to normal
- sigma = np.sqrt(Eb / (2 * train_SNR * k / n))
-
-
- def get_train_data(path):
-
- data_filename = 'ldpc_codes_16_8.mat'
- data_filepath = os.path.join(path, data_filename)
- data = scio.loadmat(data_filepath)
- codes = data['codes']
- y = data['messages']
- x = np.float32(codes)
- y = np.float32(y)
- data = (x, y)
- dataset = ds.NumpySlicesDataset(data, ['data', 'label'], shuffle=False)
- return dataset
-
-
- def get_val_data(path):
-
- data_filename = 'ldpc_validcodes_16_8.mat'
- data_filepath = os.path.join(path, data_filename)
- data = scio.loadmat(data_filepath)
- val_codes = data['valid_codes']
- val_mes = data['valid_mes']
-
- noise = np.random.normal(0.0, sigma, val_codes.shape)
- x = -2 * val_codes + 1
- x = x + noise
- x = Tensor(x, dtype.float32)
- y = Tensor(val_mes, dtype.float32)
- # data = (x, y)
- # dataset = ds.NumpySlicesDataset(data, ['data', 'label'], shuffle=False)
- # return dataset
- return x, y
-
-
- def get_test_data(path):
-
- data_filename = 'ldpc_testcodes_16_8.mat'
- data_filepath = os.path.join(path, data_filename)
- data = scio.loadmat(data_filepath)
- test_codes = data['test_codes']
- test_mes = data['test_mes']
-
- noise = np.random.normal(0.0, sigma, test_codes.shape)
- x = -2 * test_codes + 1
- x = x + noise
- x = np.float32(x)
- y = np.float32(test_mes)
- # data = (x, y)
- # dataset = ds.NumpySlicesDataset(data, ['data', 'label'], shuffle=False)
- return x, y
-
-
- def BpskAddnoise(inp, output):
- inp = -2 * inp + 1
- noise = np.random.normal(0.0, sigma, inp.shape)
- inp = inp + noise
- inp = np.float32(inp)
- output = np.float32(output)
- return inp, output
-
-
- # x, y = get_test_data('./')
- # print(x.shape, y.shape[0])
-
- # dataset = get_train_data('./')
- # # for data in dataset.create_dict_iterator():
- # # print(data['data'], data['label'])
- # dataset = dataset.map(operations=[BpskAddnoise], input_columns=['data', 'label'], output_columns=['data', 'label'])
- # for data in dataset.create_dict_iterator():
- # print(data['data'], data['label'])
- #
-
-
- # if __name__ == '__main__':
- #
- # context.set_context(mode=context.GRAPH_MODE, device_target='CPU')
- # dataset = get_train_data('./')
- # #
- # # for data in dataset.create_dict_iterator():
- # # print(data["data"], data["label"])
- # # print(dataset.get_dataset_size())
- # net = Fnet(16, 8)
- #
- # for data in dataset.create_dict_iterator():
- # for i in range(65535):
- # x = data['data'][i]
- # out = net(x)
- # print(out)
|