ValueError: 无法为形状为(6165, 5)的值馈送到张量’Placeholder_1:0’,其形状为'(?, 1)’

> 警告:TensorFlow contrib模块将不会包含在TensorFlow 2.0中。更多信息请见:
 * https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md
 * https://github.com/tensorflow/addons
如果您依赖于那里未列出的功能,请提交问题。
警告:tensorflow:从C:/Users/SONSANGWOO/Desktop/Euroaquae/The_third_semester_at_BCN/ANN/Exercise/TimeSeriespy_RNN.py:74: BasicLSTMCell.__init__ (来自tensorflow.python.ops.rnn_cell_impl)已被弃用,将在未来版本中移除。更新说明:此类相当于tf.keras.layers.LSTMCell,并将在TensorFlow 2.0中被替换。
警告:tensorflow:从C:/Users/SONSANGWOO/Desktop/Euroaquae/The_third_semester_at_BCN/ANN/Exercise/TimeSeriespy_RNN.py:75: dynamic_rnn (来自tensorflow.python.ops.rnn)已被弃用,将在未来版本中移除。更新说明:请使用`keras.layers.RNN(cell)`,它等同于这个API
警告:tensorflow:从C:\Users\SONSANGWOO\Anaconda3\lib\site-packages\tensorflow\python\ops\tensor_array_ops.py:162: colocate_with (来自tensorflow.python.framework.ops)已被弃用,将在未来版本中移除。更新说明:位置由placer自动处理。
Traceback (most recent call last):
  File "<ipython-input-1-7716630f4e29>", line 1, in <module>
    runfile('C:/Users/SONSANGWOO/Desktop/Euroaquae/The_third_semester_at_BCN/ANN/Exercise/TimeSeriespy_RNN.py', wdir='C:/Users/SONSANGWOO/Desktop/Euroaquae/The_third_semester_at_BCN/ANN/Exercise')
  File "C:\Users\SONSANGWOO\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 704, in runfile
    execfile(filename, namespace)
  File "C:\Users\SONSANGWOO\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 108, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)
  File "C:/Users/SONSANGWOO/Desktop/Euroaquae/The_third_semester_at_BCN/ANN/Exercise/TimeSeriespy_RNN.py", line 97, in <module>
    X: trainX, Y: trainY})
  File "C:\Users\SONSANGWOO\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 929, in run
    run_metadata_ptr)
  File "C:\Users\SONSANGWOO\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 1128, in _run
    str(subfeed_t.get_shape())))
ValueError: 无法为形状为(6165, 5)的值馈送到张量'Placeholder_1:0',其形状为'(?, 1)'

我遇到了一个错误,我已经检查了每个变量的维度,看起来没有问题… 您能告诉我哪里出了问题以及如何修复吗?

我想做的-weather prediction。我的输入形状将是( xxxx , 5),这里 xxxx 是输入数据的行数,5 是输入的类型,包括平均温度等。

输出形状必须是(yyyy, 1),因为它的列将包含预测的降水量。

奇怪的是,当程序读取文件时,Data_Y 的形状是( hhhh, 5),本应是(yyyy, 1)。

我认为这是导致所有错误的原因。

输入文件的链接如下

输入文件

输入图片描述

我该如何解决这个问题?请伸出援手。

导入tensorflow as tf导入pandas as pd导入numpy as np导入matplotlib从matplotlib导入pyplot as plt
tf.reset_default_graph()
tf.set_random_seed(777)  # 可重复性
def MinMaxScaler(data):
    numerator = data - np.min(data, 0)
    denominator = np.max(data, 0) - np.min(data, 0)
    # 噪声项防止零除
    return numerator / (denominator + 1e-7)
# 训练参数
seq_length = 6
data_dim = 5
hidden_dim = 10
output_dim = 1
learning_rate = 0.01
iterations = 500
# Open, High, Low, Volume, Close
#df = pd.read_csv("precipitation_post.csv", quotechar='"', decimal=".")
#df = df.interpolate(method ='linear', limit_direction ='forward')
#xy = df.reindex(index=df.index[::-1])
xy = np.loadtxt('df.txt', dtype='double', delimiter=' ', skiprows=1)
#xy = xy[::-1]  # 训练/测试分割
train_size = int(len(xy) * 0.7)
train_set = xy[0:train_size]
test_set = xy[train_size - seq_length:] # 从[train_size - seq_length]索引开始使用过去的序列
# 缩放每个
train_set = MinMaxScaler(train_set)
test_set = MinMaxScaler(test_set)
x = xy
y = xy[:, [-1]] # 关闭作为标签
# 构建数据集
def build_dataset(time_series, seq_length):
    dataX = []
    dataY = []
    for i in range(0, len(time_series) - seq_length):
        _x = time_series[i:i + seq_length]
        _y = time_series[i + seq_length]
        print(_x, "->", _y)
        dataX.append(_x)
        dataY.append(_y)
    return np.array(dataX), np.array(dataY)
trainX, trainY = build_dataset(train_set, seq_length)
testX, testY = build_dataset(test_set, seq_length)
# 输入占位符
X = tf.placeholder(tf.float32, shape=[None, seq_length, data_dim])
Y = tf.placeholder(tf.float32, shape=[None, 1])
# 构建LSTM网络
cell = tf.contrib.rnn.BasicLSTMCell(
    num_units=hidden_dim, state_is_tuple=True, activation=tf.tanh)
outputs, _states = tf.nn.dynamic_rnn(cell, X, dtype=tf.float32)
Y_pred = tf.contrib.layers.fully_connected(
    outputs[:, -1], output_dim, activation_fn=None)  # 我们使用最后一个单元的输出
# 成本/损失
loss = tf.reduce_sum(tf.square(Y_pred - Y))  # 平方和
# 优化器
optimizer = tf.train.AdamOptimizer(learning_rate)
train = optimizer.minimize(loss)
# RMSE
targets = tf.placeholder(tf.float32, [None, 1])
predictions = tf.placeholder(tf.float32, [None, 1])
rmse = tf.sqrt(tf.reduce_mean(tf.square(targets - predictions)))
with tf.Session() as sess:
    init = tf.global_variables_initializer()
    sess.run(init)
    # 训练步骤
    for i in range(iterations):
        _, step_loss = sess.run([train, loss], feed_dict={
                                X: trainX, Y: trainY})
        print("[步骤: {}] 损失: {}".format(i, step_loss))
    # 测试步骤
    test_predict = sess.run(Y_pred, feed_dict={X: testX})
    rmse_val = sess.run(rmse, feed_dict={
                    targets: testY, predictions: test_predict})
    print("RMSE: {}".format(rmse_val))
    # 绘制预测
plt.plot(testY)
plt.plot(test_predict)
plt.xlabel("时间段")
plt.ylabel("降水量")
plt.show()

回答:

根据您提供的信息,以下是一个解决方案。显然,正如您可能已经意识到的那样,问题出在build_dataset函数中。您需要将您的函数更改为以下内容。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注