使用FOR循环使用TensorF初始化权重

2024-03-29 10:10:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我面临以下问题。我想要一个函数,给定每个隐藏层中的点数,为一个简单的NN创建权重

def initialize_parameters(hidden):
        parameters = dict({})

    def W_creator(b,a,i):
        return tf.get_variable("W"+str(i+1), [b,a], initializer = tf.contrib.layers.xavier_initializer(seed = 1))
    def b_creator(b,i):
        return tf.get_variable('b'+str(i+1), [b,1], initializer = tf.zeros_initializer())

    for l in range(len(hidden)):
        parameters['W'+str(l+1)] = W_creator(hidden[l+1],hidden[l],l)
        parameters['b'+str(l+1)] = b_creator(hidden[l+1],l)
    return parameters

我调用这个函数,然后使用

tf.reset_default_graph()
with tf.Session() as sess:
    parameters = initialize_parameters()
    print("W1 = " + str(parameters["W1"]))
    print("b1 = " + str(parameters["b1"]))
    print("W2 = " + str(parameters["W2"]))
    print("b2 = " + str(parameters["b2"]))

检查一切是否正常,并引发索引器

     29     for l in range(len(hidden)):
---> 30         W = W_creator(hidden[l+1],hidden[l],l)
     31         parameters['W'+str(l+1)] = W
     32 

IndexError: list index out of range

有人能帮忙吗


Tags: 函数forgetreturntfdefrangevariable