如何创建权重也称为作弊的数组,以找到最佳准确性

我是一名数据科学家,并且已经思考了一段时间,当我训练一个模型时,它会根据学习率在梯度方向上调整权重,以找到我的指标的最佳精度...因此,从技术上讲,所有这些调整后的权重可以手动生成,并用于找到我给定问题的最佳精度。

因此,我尝试创建一个函数,该函数接收给定模型中所有数字之差(例如学习率例如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也是如此)。 预先感谢!

xfxxfx0406 回答:如何创建权重也称为作弊的数组,以找到最佳准确性

我又冲浪了一下,因为在问了这个问题之后,答案开始为我解决了如何处理此XD的问题。

def get_all_posib_weights(nodes,lr=0.1,save=''):
    llist = (np.append(np.arange(1/lr)*lr,-np.arange(1,1/lr)*lr))
    comb = itertools.combinations_with_replacement(llist,nodes)
    llist2 = list(comb)
    print(len(llist2))
    if len(save) > 0:
        for i,l in enumerate(llist2):
            np.save(save+'{}/{}-{}-{}.npy'.format(nodes,nodes,lr,i),l)
    return llist2Exchange/weights/'
list_weights = get_all_posib_weights(10,0.2)

所以这将起作用,并且正如预期的那样,它具有无穷的可能性,基本上,我计划找到最佳的权重集,并从所选的权重集中进一步训练模型:) (我知道非常不切实际)

我把它放给任何实际使用此XD的人,也许有些天才会出现并改进代码:P 我会再检查一下Adios,让它知道它的效果是否比普通训练方法更好;)

本文链接:https://www.f2er.com/3156653.html

大家都在问