我是一名数据科学家,并且已经思考了一段时间,当我训练一个模型时,它会根据学习率在梯度方向上调整权重,以找到我的指标的最佳精度...因此,从技术上讲,所有这些调整后的权重可以手动生成,并用于找到我给定问题的最佳精度。
因此,我尝试创建一个函数,该函数接收给定模型中所有数字之差(例如学习率例如0.0001)和节点数量(即数组大小)(尽管可以为每一层创建权重可能性)也可以是参数)。
(为此,我只会使用一层。)
我尝试自己创建此文件,但一开始就失败了,因为它背后的逻辑破坏了我的大脑XD:
num = 1
lr=0.01
nodes = 100
all_posib = []
for a in range(nodes):
llist = []
for b in range(nodes):
llist.append((num)*lr)
for c in range(nodes):
for d in range(nodes):
llist2 = llist.copy()
llist2[c] = ((num)*lr+(num+d)*lr)
llist2 = [np.array([llist2])]
all_posib.append(llist2)
首先,这还不完整,但是应该大致了解我想做什么。 其次,这需要以某种方式进行矢量化处理,或者存在可以使其更好地实现的功能,因为它已经花费了相当多的时间来加载。 第三,我知道在任何情况下都要花很长时间才能装载重物,但是我可能要等上几个晚上。
这是一个我可能会使用的模型示例:P,我最喜欢将其放在一个循环中,然后检查哪个权重组提供最佳的准确性:
def build_model():
model = models.Sequential()
model.add(layers.Dense(100,activation = "relu",input_shape = (train_data.shape[1],)))
model.add(layers.Dense(1))
model.compile(optimizer = 'Adam',loss = 'mse',metrics = ['mae'])
return model
model = build_model()
model.set_weights(llist_weights)
test_mse_score,test_mae_score = model.evaluate(test_data,test_targets)
因此,如果您不想运行以上示例,则我需要的输出基本上是给定节点/大小的所有可能权重的列表:
示例:
[[0,0,0,0.1],[0,0,0,0.2],[0,0,0,0.3],
[0,0,0.1,0.1],[0,0,0.2,0.1],[0,0,0.3,0.1],
[0,0.1,0.1,0.1],[0,0.2,0.1,0.1],[0,0.3,0.1,0.1],
[0.1、0.1、0.1、0.1],[0.2、0.1、0.1、0.1],[0.3、0.1、0.1、0.1]
甚至可以列出所有想要的值,例如[0,0.1,0.2,0.3,0.4,0.5,0.6],然后创建大小为4的所有可能组合(我的逻辑问题是想要的值比大小更大)数组,所以我也不知道如何在逻辑上合并它)
如果可以的话,请帮我解决这个问题,对于我的余生来说,这确实是一个很大的帮助(当然对我的XD也是如此)。 预先感谢!