作为序言,我了解如何制作无尺寸张量及其主要用途。
我隐藏的图层取决于我传入的数据的batch_size。因此我将批量大小传递给占位符。不幸的是,这给我带来了一堆压力和错误,因为许多功能对于非尺寸的形状不能很好地工作。我正在寻找一种方法来使用张量的动态形状来计算隐藏层中的节点数。
目前,我收到错误
InvalidArgumentError(请参阅上面的回溯):您必须使用dtype int32为占位符张量'Placeholder_2'提供值 [[Node:Placeholder_2 = Placeholderdtype = DT_INT32,shape = [],_ device =“/ job:localhost / replica:0 / task:0 / cpu:0”]]
它不喜欢使用运行时未知的形状初始化填充常量。我非常感谢帮助
下面是一段错误被隔离的代码片段。
import tensorflow as tf
x = tf.placeholder(tf.float32, shape=(None, 784))
nodes = tf.div(tf.shape(x)[0],2)
bias = tf.Variable(tf.constant(.1 ,shape = [nodes]), validate_shape = False )
init = tf.initialize_all_variables()
sess = tf.InteractiveSession()
sess.run(init)
我也收到错误:
shape = [int(dim)for dim in shape] TypeError:int()参数必须是字符串,类字节对象或数字,而不是'Tensor'
用
替换填充线时bias = tf.Variable(tf.constant(.1 ,shape = [nodes]), validate_shape = False )
提前谢谢。
答案 0 :(得分:0)
Tensor的形状不能依赖于另一个Tensor。形状必须仅包含整数值,或None
,表示形状未知。如果要对形状执行计算,则需要使用对整数进行操作的Python基元进行这些计算,而不是使用在张量上运行的Tensorflow基元。
(你也不应该关闭形状验证 - 这表明你做错了。)
那就是说,神经网络中的不同层使用不同的批量大小值是不寻常的 - 你确定你想做什么?
如果您确定,请尝试以下方法:
import tensorflow as tf
batch_size = 32
x = tf.placeholder(tf.float32, shape=(batch_size, 784))
bias = tf.Variable(tf.constant(.1, shape = [batch_size / 2]))
init = tf.initialize_all_variables()
sess = tf.InteractiveSession()
sess.run(init)
我希望有所帮助!