Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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
使用批量大小大于1的TensorFlow占位符形状_Tensorflow_Reshape_Placeholder - Fatal编程技术网

使用批量大小大于1的TensorFlow占位符形状

使用批量大小大于1的TensorFlow占位符形状,tensorflow,reshape,placeholder,Tensorflow,Reshape,Placeholder,我定义了两个占位符,x带有形状[None,11],y带有形状[None,10]。使用None作为第一维度,我应该能够使用具有各种批量大小的模型 如果我在随机梯度下降模式下运行,使用批量大小1,一切正常 sess.run(train, {x: [df.values[i][0:11]], y: [df.values[i][11:]]}) 在这种情况下,占位符x和y的形状为(1,11)和(1,10) 如果我在全批量梯度下降模式下运行,使用批量大小1000, 我得到不兼容的矩阵运算错误。 在这种情况下

我定义了两个占位符,x带有形状[None,11],y带有形状[None,10]。使用None作为第一维度,我应该能够使用具有各种批量大小的模型

如果我在随机梯度下降模式下运行,使用批量大小1,一切正常

sess.run(train, {x: [df.values[i][0:11]], y: [df.values[i][11:]]})
在这种情况下,占位符x和y的形状为(1,11)和(1,10)

如果我在全批量梯度下降模式下运行,使用批量大小1000, 我得到不兼容的矩阵运算错误。 在这种情况下,占位符x和y的形状分别为(1000,11)和(1000,10)

InvalidArgumentError(回溯见上文):不兼容的形状:[10,10]与[1000,10]

[[Node:gradients/Sub_grad/BroadcastGradientArgs=BroadcastGradientArgs[T=DT_INT32,_device=“/job:localhost/replica:0/task:0/cpu:0”](渐变/Sub_grad/Shape,渐变/Sub_grad/Shape_1)]]

当然我不能减去a(10,10)和a(1000,10)。 但我认为TensorFlow会为我处理“批量大小”的问题吗? 多谢各位

import pandas as pd
import tensorflow as tf
import numpy


## Import the Dummy Data from Excel
df = pd.read_excel("../data/DummyData.xlsx", sheetname=0, header=0, skiprows=1 )


x = tf.placeholder(tf.float32, shape=[None,11])
y = tf.placeholder(tf.float32, shape=[None,10])

# layer 1
W1 = tf.Variable(tf.random_normal(shape=[11,10]))
b1 = tf.Variable(tf.random_normal(shape=[10,1]))
prop_fn_1 = tf.matmul(x,W1) + b1
akt_fn_1 = tf.sigmoid(prop_fn_1)

# layer2
W2 = tf.Variable(tf.random_normal(shape=[10,10]))
b2 = tf.Variable(tf.random_normal(shape=[10,1]))
prop_fn_2 = tf.matmul(prop_fn_1, W2) + b2
akt_fn_2 = tf.sigmoid(prop_fn_2)


init = tf.global_variables_initializer()
# error
loss = tf.reduce_sum(tf.square(tf.subtract(akt_fn_2,y)))
opt = tf.train.GradientDescentOptimizer(0.0001)
train = opt.minimize(loss)



# Train Stochastic
# Using Gradient Descent

sess = tf.Session()
sess.run(init)
for i in range(1000):
    sess.run(train, {x: [df.values[i][0:11]], y: [df.values[i][11:]]})

    if i % 100 == 0:
        print( sess.run(loss,{x: [df.values[i][0:11]], y: [df.values[i][11:]]} ))
sess.close()

print("*****************")


# Train with Max Batch Size
# Using Gradient Descent
sess = tf.Session()
sess.run(init)
for i in range(1000):
    sess.run(train, feed_dict={x: df.values[:,:11], y: df.values[:,11:]})

    if i % 100 == 0:
        print(sess.run(loss, feed_dict={x: df.values[:,:11], y: df.values[:,11:]}))
sess.close()

你能帮我试试这个吗

b1 = tf.Variable(tf.random_normal(shape=[10]))
b2 = tf.Variable(tf.random_normal(shape=[10]))

TF如何知道如何对不相容张量进行运算?哇,谢谢,它很管用。请给我一些关于你黑暗艺术的见解/理由。你第一次矩阵乘法的结果是None x 10。您希望为10个值(我指定的值)中的每一个添加偏差。相反,你说你添加了一个形状为[10,1]的矩阵。看看numpy是如何工作的会有很大帮助,但是文档目前似乎已经不存在了:(好吧,我明白了。b1=tf.Variable(tf.random_normal(shape=[1,10])将等同于b1=tf.Variable(tf.random_normal(shape=[10])?不。这个想法是,如果你有一个形状为[5,4,3,2,1]的张量,然后你添加一个形状为[1]的张量)(标量值),将此值添加到5*4*3*2实例中的每个实例中。如果我没有很好地解释它,请原谅:s