Python 使用NN的参数命名变量
我想创建一个具有给定层数的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
隐藏层
,并初始化每个层的权重。但是,为了存储不同的权重,我需要不同的名称,因此我想用一个参数来命名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你的更新没有任何改变,这仍然是正确的答案。