我正在研究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)**
答案 0 :(得分:0)
预测的结果在Day Car1 Car2
1 3800.20 2200.42
2 2700.67 3678.14
3 2900.00 2694.47
中,因为您的最终激活是sigmoid function。乙状结肠将值转换为(0, 1)
范围。
您至少有两个选择可解决此问题:
(0, 1)
作为最终激活功能。输出在tanh
中。(-1, 1)
。