Python 使用NN的参数命名变量

Python 使用NN的参数命名变量,python,tensorflow,variables,neural-network,Python,Tensorflow,Variables,Neural Network,我想创建一个具有给定层数的NN。 为此,我想循环变量隐藏层,并初始化每个层的权重。但是,为了存储不同的权重,我需要不同的名称,因此我想用一个参数来命名W变量。初始化参数所说的数量 因此,如果:hidden\u layers=2。 我要初始化的变量是:w1、w2 如果hidden_layers=4 然后我想要:w1,w2,w3,w4 我想用for循环初始化变量: for i in range (hidden_layers): W + str(i) = tf.Variable(tf.init

我想创建一个具有给定层数的NN。 为此,我想循环变量
隐藏层
,并初始化每个层的权重。但是,为了存储不同的权重,我需要不同的名称,因此我想用一个参数来命名
W
变量。初始化参数所说的数量

因此,如果:
hidden\u layers=2
。 我要初始化的变量是:
w1、w2

如果
hidden_layers=4
然后我想要:
w1,w2,w3,w4

我想用for循环初始化变量:

for i in range (hidden_layers):
    W + str(i) = tf.Variable(tf.initializers.GlorotUniform()(shape=[input_shape,code_length]),name='W1') #This is wrong!

有人能帮忙吗?谢谢

你不能像那样动态命名变量。如果你想有四个“变量”,你可以使用一个列表,允许你添加任意多的“变量”。如果不想使用列表,还可以实例化四个对象

variables_list = []
hidden_layers = 4
for i in range(hidden_layers):
    variables_list.append(i)

# set the variables as you wish
variables_list[0] = "value"

正如其他人建议的那样,使用列表可能是一种解决方案,但为了以防万一,如果您的“层”没有按顺序增加,我建议您使用字典:

my_variables = {}
hidden_layers = [1, 2, 4, 6]
for layer in hidden_layers:
    my_variables['w' + str(layer)] = ...

# To use it:
my_variables.get('w2')

你是如何开始使用它们的?不。你想要一个列表,
w
。如果
hidden\u layers=2
你有
w[0]
w[1]
,如果你正在构建神经网络,你可能需要一个numpy数组。我无法想象你会真的想这样做而不是使用列表,但是,为了防止将来有人在这个问题上绊倒,真的需要知道如何做,而不是
w+str(i)=…
你可以(但实际上,不要这样做)做
eval(f“w{i}=…”)
@Dan,这不保证在本地范围内工作。@MarkMeyer请查看我更新的问题,我现在更具体了谢谢!有关更多详细信息,请参见我编辑的问题@JoshCorreia@user11400799你的更新没有任何改变,这仍然是正确的答案。