Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tf.输入占位符中具有动态形状的变量_Python_Python 3.x_Tensorflow - Fatal编程技术网

Python tf.输入占位符中具有动态形状的变量

Python tf.输入占位符中具有动态形状的变量,python,python-3.x,tensorflow,Python,Python 3.x,Tensorflow,我试图建立一个网络,我的要求是隐藏的单位形状应该根据输入的形状,以便用户可以给任何长度的输入。我想做的是: import tensorflow as tf n_hidden_1=100 input_ = tf.placeholder(name='input_data',shape=[None,None],dtype=tf.float32) variable_data = tf.Variable(tf.random_normal([tf.shape(input_)[1], n_hidden_1]

我试图建立一个网络,我的要求是隐藏的单位形状应该根据输入的形状,以便用户可以给任何长度的输入。我想做的是:

import tensorflow as tf

n_hidden_1=100
input_ = tf.placeholder(name='input_data',shape=[None,None],dtype=tf.float32)
variable_data = tf.Variable(tf.random_normal([tf.shape(input_)[1], n_hidden_1]))

bias_ = tf.Variable(tf.random_normal([n_hidden_1]))

output = tf.matmul(input_,variable_data)+bias_

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(sess.run(output,feed_dict={input_:[[1,2,3,4,5]]}))
我想要

variable\u data=tf.variable(tf.random\u normal([tf.shape(input\u)[1],n\u hidden\u 1]))

来自输入占位符的形状,但它给出了一个错误。这就是我尝试这种方法的原因:

variable_data = tf.Variable(tf.random_normal([tf.shape(input_)[1], n_hidden_1]),validate_shape=False)
但我又犯了另一个错误:

InvalidArgumentError: You must feed a value for placeholder tensor 'input_data_7' with dtype float and shape [?,?]
     [[Node: input_data_7 = Placeholder[dtype=DT_FLOAT, shape=[?,?], _device="/job:localhost/replica:0/task:0/device:CPU:0"]()]]

如何从变量形状的占位符中获取形状int。

A
tf.variable
不能真正具有动态形状,因为它对它们的用途没有意义。在tensorflow中,变量是指通常通过SGD进行优化的模型参数。在优化过程中,您通常假设成本函数及其定义的空间在每一步都不会发生变化。不这样做——特别是以随机、非计划的方式——将导致定义不清的优化问题

但是,您可以使用一个变量,当第一个示例出现时,我们在运行时延迟其(静态)形状的定义。您就快到了:您只需将示例提供给
全局变量\u初始值设定项
,它将变量初始化为正确的形状和值:

import tensorflow as tf


n_hidden_1=100
input_ = tf.placeholder(name='input_data',shape=[None,None],dtype=tf.float32)
variable_data = tf.Variable(tf.random_normal([tf.shape(input_)[1], n_hidden_1]), validate_shape=False)

bias_ = tf.Variable(tf.random_normal([n_hidden_1]))

output = tf.matmul(input_,variable_data)+bias_

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer(), feed_dict={input_:[[1,2,3,4,5]]})
    print(sess.run(output, feed_dict={input_:[[1,2,3,4,5]]}))


将tensorflow导入为tf
n_隐藏_1=100
输入=tf.placeholder(name='input_data',shape=[None,None],dtype=tf.float32)
变量数据=tf.variable(tf.random\u normal([tf.shape(input)[1],n\u hidden\u 1]),验证\u shape=False)
偏差=tf.变量(tf.随机正常([n\u隐藏1]))
输出=tf.matmul(输入、变量数据)+偏差_
使用tf.Session()作为sess:
run(tf.global_variables_initializer(),feed_dict={input_:[[1,2,3,4,5]})
打印(sess.run(输出,提要={input\[[1,2,3,4,5]}))