我想了解如何實現神經網絡。所以我做了我自己的數據集。 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