首先随机生成10000个training数据X(x1, x2), x1, x2取值范围都为0-500随机数。
我们把x1, x2当作一个点(x, y) 的两个特征放在二维平面可以很直观看到training数据的分布。
然后取一个分界线,这里随便弄个抛物线:
A = 0.2
B = -20
C = 500
y = A * p_x1 ** 2 + B * p_x1 + C
如果training数据在这个抛物线的上方,我们显示为绿色1,在抛物线下方我们显示为蓝色0, 所以我们label Y 为0或者1.
相关代码:
p_x1 = np.random.rand(10000) * 500
p_x2 = np.random.rand(10000) * 500
p_x_trigger = A * p_x1 ** 2 + B * p_x1 + C
p_x = np.zeros((10000, 2))
p_x[:,0] = p_x1
p_x[:,1] = p_x2
p_y = (p_x2 > p_x_trigger)*1
我们随便组织几层浅层全链接网络来尝试训练:
model.add(Dense(2, activation='relu', input_shape=(2,)))
model.add(Dense(4, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(2, activation='softmax'))
只要保证输入和输出的大小为2, 因为我们的类型只有0和1
model.fit(p_x, p_y, batch_