使用Gekko的大脑模块,我如何确定用于解决深度学习问题的层数和层类型?

问题描述 投票:2回答:1

我正在学习将Gekko的大脑模块用于深度学习应用程序。

我一直在建立一个神经网络来学习numpy.cos()函数,然后产生相似的结果。

当我的训练范围是:时,我很适合:

x = np.linspace(0,2*np.pi,100)

但是当我尝试将范围扩展到:时,模型崩溃了。

x = np.linspace(0,3*np.pi,100)

我需要在神经网络中进行哪些更改以增加模型的灵活性,使其适用于其他范围?

这是我的代码:

from gekko import brain
import numpy as np
import matplotlib.pyplot as plt

#Set up neural network 
b = brain.Brain()
b.input_layer(1)
b.layer(linear=2)
b.layer(tanh=2)
b.layer(linear=2)
b.output_layer(1)

#Train neural network
x = np.linspace(0,2*np.pi,100)
y = np.cos(x)
b.learn(x,y)

#Calculate using trained nueral network
xp = np.linspace(-2*np.pi,4*np.pi,100)
yp = b.think(xp)

#Plot results
plt.figure()
plt.plot(x,y,'bo')
plt.plot(xp,yp[0],'r-')
plt.show()

这些是2pi的结果:

enter image description here

这些是3pi的结果:

enter image description here

neural-network deep-learning gekko
1个回答
1
投票

如果将节点数增加到5,则会得到以下结果b.layer(tanh=5)

这个问题可能有多个答案。也许增加层数或更改激活功能。您也可以始终使用其他求解器。寻找最佳的网络体系结构本身就是一个优化问题。有些人试图用遗传算法来解决这个问题,例如:

https://arxiv.org/pdf/1808.03818.pdf

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.