张量流:二维输入数组和标量输出的回归

2024-04-26 23:09:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我是tensorflow的新用户,并将其用于回归问题。神经网络模型的输入是一个二维数组(200行51列),与此输入相关的输出是标量。输入数组和相应的输出存储在一个字典中,对于这个字典,我试图最小化均方误差损失。使用以下代码构建模型

keysD = TrainingDic.keys()
loss = tf.zeros([1])
for i in range(len(keysD)):
    X_data = tf.placeholder(tf.float32, [200,51]) 
    trueY = tf.placeholder(tf.float32)
    predY, cost = build_model(X_data,trueY) # neural network returning predicted value and squared error
    loss = tf.add(loss,cost)

meanLoss = tf.divide(loss,len(keysD)) 
train = tf.train.AdamOptimizer(learning_rate).minimize(meanLoss)

运行模型

^{pr2}$

但这给了我以下错误

在tensorflow.python.framework.错误_impl.InvalidArgumentError:您必须为占位符张量“placeholder”输入一个值,该值包含dtype float和shape[200,63] [[节点:占位符=占位符类型=DT斨浮点数,形状=[200,63],\u设备=”/作业:本地主机/副本:0/任务:0/cpu:0“]]

如果有人能帮我,我会非常感激的?我确信我遗漏了一个关于占位符的基本概念,如果能正确引导,我将不胜感激。在

我研究的另一种方法是将输入数组展平为行向量,并将整批训练字典作为一个整体提供。这种方法毫无错误。唯一的问题是,我也在寻找关于X\u数据列的输出梯度。对于平坦阵列,我不知道如何获得梯度信息。在

神经网络

def build_model(X_data,trueY, input_dim):

n_hUnits_1 =20
n_hUnits_2 = 20
W_1 = tf.Variable(tf.random_uniform([input_dim,n_hUnits_1], -1,1))
b_1 = tf.Variable(tf.zeros([n_hUnits_1]))
W_2 = tf.Variable(tf.random_uniform([n_hUnits_1,n_hUnits_2], -1,1))
b_2 = tf.Variable(tf.zeros([n_hUnits_2]))
W_O = tf.Variable(tf.random_uniform([n_hUnits_2,1], -1,1))
b_O = tf.Variable(tf.zeros([1]))

layer_1 = tf.add(tf.matmul(X_data,W_1), b_1)
layer_1 = tf.nn.sigmoid(layer_1)
# layer 1 multiplying and adding bias then activation function
layer_2 = tf.add(tf.matmul(layer_1,W_2), b_2)
layer_2 = tf.nn.sigmoid(layer_2)
# layer 2 multiplying and adding bias then activation function
predY = tf.add(tf.matmul(layer_2,W_O), b_O)
cost = tf.square(predY-trueY)
return predY, cost 

Tags: 模型addlayerdata字典tfzeros数组
1条回答
网友
1楼 · 发布于 2024-04-26 23:09:06

此错误表示运行会话时没有提供占位符值。在

You must feed a value for placeholder tensor 'Placeholder'

tensor 'Placeholder'建议使用名称Placeholder的图形节点。在

错误来自您运行会话的方式。在

feed_dict = {X_data:xTT, trueEnergy:yTT}

您的模型期望的是trueY,而不是{}。在

相关问题 更多 >