我想了解如何实现神经网络。所以我做了我自己的数据集。 Xtrain是numpy.random漂浮。 Ytrain is sign(sin(1/x^3) 尝试实施神经网络给我的结果很差,精度达到30%,随机森林有100棵树给出了97%,但是我听说NN可以近似任何函数。错在我的理解?神经网络的实现
import numpy as np
import keras
import math
from sklearn.ensemble import RandomForestClassifier as RF
train = np.random.rand(100000)
test = np.random.rand(100000)
def g(x):
if math.sin(2*3.14*x) > 0:
if math.cos(2*3.14*x) > 0:
return 0
else:
return 1
else:
if math.cos(2*3.14*x) > 0:
return 2
else:
return 3
def f(x):
x = (1/x) ** 3
res = [0, 0, 0, 0]
res[g(x)] = 1
return res
ytrain = np.array([f(x) for x in train])
ytest = np.array([f(x) for x in test])
train = np.array([[x] for x in train])
test = np.array([[x] for x in test])
from keras.models import Sequential
from keras.layers import Dense, Activation, Embedding, LSTM
model = Sequential()
model.add(Dense(100, input_dim=1))
model.add(Activation('sigmoid'))
model.add(Dense(100))
model.add(Activation('sigmoid'))
model.add(Dense(100))
model.add(Activation('sigmoid'))
model.add(Dense(4))
model.add(Activation('softmax'))
model.compile(optimizer='sgd',
loss='categorical_crossentropy',
metrics=['accuracy'])
PS我尝试了很多层,激活功能,丧失功能,优化,但从来没有超过30%的准确率:(
我投票结束这个问题作为题外话,因为这是关于神经网络设计的一般问题,它会在其他stackexchange网站上得到更好的回答。 stackoverflow主要是编程问题。 – rds