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]}))