在每次迭代中,我想动态提供我想要的占位符数,然后将数据提供给它们。这可能吗?怎么样?我试图在epoch循环中创建整个模型(占位符,丢失,优化器),但这会给未初始化的变量带来错误。
目前我在列表中有n = 5个占位符,每个占位符=(1,k),我向它们提供数据。但是n需要在epoch循环内的数据馈送期间动态定义。
答案 0 :(得分:1)
也许你误解了张量是什么。
如果您将张量视为多维列表,您可以理解,拥有动态数量的占位符且形状为[1, k]
是没有意义的。
相反,你必须使用单个张量。
因此,将输入占位符定义为形状为[None, 1, k]
的张量。
placeholder_ = tf.placeholder(tf.float32, [None, 1, k])
使用此声明,您可以定义一个占位符,其中包含tf.float32
类型和未定义数量的元素(None
部分),其形状为[1,k]
。
在每次迭代中,您都必须使用正确的值为占位符提供信息。例如跑步
result = sess.run(defined_op, feed_dict={
placeholder_: numpy_ndarray_with_N_elements_with_shape_1_k
})
通过这种方式,您不需要在计算图中定义新变量(这根本不起作用),而是将其与所需的值一起提供。