【发布时间】:2018-06-18 16:39:32
【问题描述】:
我有一个简单的占位符:
input_x = tf.placeholder(name='tensor_a',shape=[2,3,4],dtype=tf.int32)
我想获取形状索引并在变量中使用它作为参数,例如:
var_b = tf.get_variable('name_a',shape=[input_x.get_shape()[0],2],dtype=tf.float32,initializer=tf.random_uniform_initializer())
和
var_c = tf.get_variable('name_b',shape=[input_x.get_shape()[1],2],dtype=tf.float32,initializer=tf.random_uniform_initializer())
完整的程序:
import tensorflow as tf
import numpy as np
tf.reset_default_graph()
input_x = tf.placeholder(name='tensor_a',shape=[2,3,4],dtype=tf.int32)
var_b = tf.get_variable('name_a',shape=[input_x.get_shape()[0],2],dtype=tf.float32,initializer=tf.random_uniform_initializer())
var_c = tf.get_variable('name_b',shape=[input_x.get_shape()[1],2],dtype=tf.float32,initializer=tf.random_uniform_initializer())
sum_c=tf.add(var_b,var_c)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print(sess.run(sum_c,feed_dict={input_x:np.random.randint(0,10,[2,3,4])}))
但我收到此错误:
TypeError: 'TensorShape' object is not callable
我怎样才能做到这一点?
编辑:如果我试图重塑它,我会收到另一个错误:
import tensorflow as tf
import numpy as np
tf.reset_default_graph()
input_x = tf.placeholder(name='tensor_a',shape=[None,None],dtype=tf.int32)
print(input_x.get_shape())
var_b = tf.get_variable('name_a',shape=[4,4],dtype=tf.float32,initializer=tf.random_uniform_initializer())
var_c = tf.get_variable('name_b',shape=[4,4],dtype=tf.float32,initializer=tf.random_uniform_initializer())
vac_d= tf.get_variable('name_d',shape=[var_c.shape[0],60],dtype=tf.float32,initializer=tf.random_uniform_initializer())
reshape_ = tf.reshape(var_c,[input_x.shape[0],input_x.shape[1],-1])
print(reshape_)
sum_c=tf.add(var_b,var_c)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print(sess.run(sum_c,feed_dict={input_x:np.random.randint(0,10,[2,2])}))
错误:
TypeError: Failed to convert object of type <class 'list'> to Tensor. Contents: [Dimension(None), Dimension(None), -1]. Consider casting elements to a supported type.
【问题讨论】:
-
在
numpy和可能的tensorflow中,shape是一个属性,而不是一个方法。所以把()放在它产生这个错误之后:input_x.shape()
标签: python python-3.x numpy tensorflow