深度学习预测结果的范围(BPSK)

时间:2020-09-06 20:14:01

标签: python deep-learning

我正在研究ML程序,我需要理解为什么我的预测结果在0到1的范围内。对于BPSK,我的结果应该是-1或1.在代码预测结果中对于-1总是变成0,可以解决这个问题。 我的代码是:

# first neural network with keras tutorial
import pandas 
from numpy import genfromtxt
from keras.models import Sequential
from keras.layers import Dense
# load the dataset
dataset = genfromtxt("C:/Users/Kerim/Desktop/dataset/snr_10_tau_09/t.csv",dtype=complex 
,delimiter=",")
X = dataset[:,0:5]
y = dataset[:,5]
# define the keras model
model = Sequential()
model.add(Dense(12, input_dim=5, activation='tanh'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# compile the keras model
model.compile(loss='mse', optimizer='sgd', metrics=['accuracy'])
# fit the keras model on the dataset
model.fit(X, y, epochs=150, batch_size=10)
# evaluate the keras model
_, accuracy = model.evaluate(X, y)
print('Accuracy: %.2f' % (accuracy*100))
predictions = model.predict_classes(X)
# summarize the first 5 cases
for i in range(0,900,90):
   print('%s => %d (expected %d)' % (X[i].tolist(), predictions[i], y[i]))

我的预测输出是:

**[0j, (-1+0j), (-0.25207-0.26366j), (-1.1735-0.027089j), (-1.1735-0.027089j)] => 0 (expected -1)
  [0j, (-1+0j), (0.0080991+0.14503j), (-0.87461+0.016972j), (-0.87461+0.016972j)] => 0 (expected -1)
  [(1+0j), (1+0j), (0.25098-0.31795j), (1.1745+0.23413j), (1.1745+0.23413j)] => 1 (expected 1)
  [0j, (-1+0j), (-0.22237+0.25802j), (-1.4702+0.63253j), (-1.4702+0.63253j)] => 0 (expected -1)
  [0j, (-1+0j), (-0.25788+0.087908j), (-0.88608-0.11732j), (-0.88608-0.11732j)] => 0 (expected -1)
  [(1+0j), (1+0j), (0.0062392-0.3863j), (1.0404+0.033856j), (1.0404+0.033856j)] => 1 (expected 1)**

1 个答案:

答案 0 :(得分:0)

预测的结果在Day Car1 Car2 1 3800.20 2200.42 2 2700.67 3678.14 3 2900.00 2694.47 中,因为您的最终激活是sigmoid function。乙状结肠将值转换为(0, 1)范围。

您至少有两个选择可解决此问题:

  1. 使用(0, 1)作为最终激活功能。输出在tanh中。
  2. 将标签转换为(-1, 1)