Tensorflow / Numpy:如何解决此错误,以便获得2个目标预测

时间:2019-07-30 21:01:14

标签: python tensorflow

我有一个包含2列数据的CSV文件。我建立了一个回归方法模型来进行预测。但是目前,我只能获得1个预测,我该怎么做才能获得2个预测。我以前使用了以下模型

def build_model():
  model = keras.Sequential([
    layers.Dense(64, activation=tf.nn.relu, input_shape=[len(train_dataset.keys())]),
    layers.Dense(64, activation=tf.nn.relu),
    layers.Dense(1)
  ])

但是我找到了一个新模型,所以我使用了如下所示的模型。

这就是我加载数据的方式

column_names = ['longitude', 'Latitude']
raw_dataset = pd.read_csv('loglat.csv', names=column_names)

train_dataset = dataset.sample(random_state=0)
test_dataset = dataset.drop(train_dataset.index)
train_stats = train_dataset.describe()
train_stats = train_stats.transpose()
train_stats

train_labels = train_dataset.pop('longitude')
test_labels = test_dataset.pop('longitude')

normed_train_data = train_dataset
normed_test_data = test_dataset

新模型

from tf.keras.layers import Input, Dense
from tf.keras.models import Model


def build_model():
    X = Input(shape=[len(train_dataset.keys())])
    hidden_1 = Dense(64, activation=tf.nn.relu)(X)
    hidden_2 = Dense(64, activation=tf.nn.relu)(hidden_1)
    out_1 = Dense(1)(hidden_2)
    out_2 = Dense(1)(hidden_2)

    model = Model(inputs=[X], outputs=[out_1, out_2])
    optimizer = tf.keras.optimizers.RMSprop(0.001)
    model.compile(loss='mean_squared_error',
                  optimizer=optimizer,
                  metrics=['mean_absolute_error', 'mean_squared_error'])
    return model

model = build_model()

linreg = model.fit(normed_train_data, train_labels, epochs=1000, verbose=0)

test_predictions = model.predict(normed_test_data).flatten()

与此有关的错误是:

  

ValueError:检查模型目标时出错:传递给模型的Numpy数组列表不是模型预期的大小。预计会看到2个数组,但得到了以下1个数组的列表:[array([[[130.4998]])] ...

0 个答案:

没有答案