tensorflow动态创建占位符

时间:2016-06-03 19:14:03

标签: tensorflow

在每次迭代中,我想动态提供我想要的占位符数,然后将数据提供给它们。这可能吗?怎么样?我试图在epoch循环中创建整个模型(占位符,丢失,优化器),但这会给未初始化的变量带来错误。

目前我在列表中有n = 5个占位符,每个占位符=(1,k),我向它们提供数据。但是n需要在epoch循环内的数据馈送期间动态定义。

1 个答案:

答案 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
})

通过这种方式,您不需要在计算图中定义新变量(这根本不起作用),而是将其与所需的值一起提供。