gpt4 book ai didi

python - 神经网络的实现

转载 作者:行者123 更新时间:2023-11-30 09:00:34 24 4
gpt4 key购买 nike

我正在尝试了解如何实现神经网络。所以我制作了自己的数据集。 Xtrain 是 numpy.random float 。 Ytrain 是符号(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'])

附注我尝试了很多层、激活函数、损失函数、优化器,但从未获得超过 30% 的准确率:(

最佳答案

我怀疑 30% 的准确度是小学习率设置和小训练步长设置的组合。

我用 model.fit(train, ytrain, nb_epoch=5, batch_size=32) 运行了你的代码片段,经过 5 个 epoch 的训练,它产生了大约 28% 的准确率。使用相同的设置,但将训练步数增加到 nb_epoch=50,损失下降到约 1.157 左右,准确率提高到 40%。进一步增加训练步骤应该会导致模型进一步收敛。除此之外,您还可以尝试为模型配置更大的学习率设置,这可以使收敛速度更快:

model.compile(loss='categorical_crossentropy', optimizer=SGD(lr=0.1, momentum=0.9, nesterov=True), metrics=['accuracy'])

尽管要小心,但不要将学习率设置得太大,否则你的损失可能会爆炸。

编辑:众所周知,神经网络具有对极其复杂的函数进行建模的潜力,然而,模型是否真正产生良好的性能取决于模型如何设计、训练以及与具体应用相关的许多其他问题。

关于python - 神经网络的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40898414/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com