带keras,张量流的神经网络InvalidArgumentError

时间:2020-04-28 10:00:59

标签: tensorflow neural-network

我正在尝试根据所产生的能量和煤的性质来设计火力发电厂排放的预测模型。我看过不同的教程来设计此代码,因为这不是我的专业领域,但是每次运行模型单元时都会失败。 以下是用于标准化和预处理数据的代码

import numpy as np
from sklearn import preprocessing
raw_data=np.loadtxt('raw_data.csv',delimiter=',',skiprows=1)
unscaled_inputs=raw_data[:,0:30]
targets=raw_data[:,30:110]
scaled_inputs = preprocessing.scale(unscaled_inputs)
samples_count=scaled_inputs.shape[0]
train_samples_count=int(0.8*samples_count)
validation_samples_count=int(0.1*samples_count)
test_samples_count=samples_count-train_samples_count-validation_samples_count
train_inputs=scaled_inputs[:train_samples_count]
train_targets=targets[:train_samples_count]
       validation_inputs=scaled_inputs[train_samples_count:train_samples_count+validation_samples_count]       validation_targets=targets[train_samples_count:train_samples_count+validation_samples_count]

test_inputs=scaled_inputs[train_samples_count+validation_samples_count:]
test_targets=targets[train_samples_count+validation_samples_count:]

np.savez('coal_data_train', inputs=train_inputs, targets=train_targets)
np.savez('coal_data_validation', inputs=validation_inputs, targets=validation_targets)
np.savez('coal_data_test', inputs=test_inputs, targets=test_targets)

以下是用于模型的代码

import numpy as np
import tensorflow as tf
npz=np.load('coal_data_train.npz')
train_inputs = npz['inputs'].astype(np.float)
train_targets = npz['targets'].astype(np.int)

npz = np.load('coal_data_validation.npz')
validation_inputs, validation_targets = npz['inputs'].astype(np.float), npz['targets'].astype(np.int)

npz = np.load('coal_data_test.npz')
test_inputs, test_targets = npz['inputs'].astype(np.float), npz['targets'].astype(np.int)
input_size = 30
output_size = 81
hidden_layer_size = 61
model = tf.keras.Sequential([
    tf.keras.layers.Dense(hidden_layer_size, activation='relu'),
    tf.keras.layers.Dense(hidden_layer_size, activation='relu'),
    tf.keras.layers.Dense(output_size, activation='linear') 
])

model.compile(optimizer='adam', loss='mean_absolute_error', metrics=['accuracy'])

batch_size = 10
max_epochs = 50
early_stopping = tf.keras.callbacks.EarlyStopping(patience=2)

model.fit(train_inputs, 
          train_targets, 
          batch_size=10, 
          epochs=max_epochs, 
          verbose=2,
          callbacks=[early_stopping], 
          validation_data=(validation_inputs, validation_targets),
          )

它返回错误enter image description here

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您的输出大小大于应有的大小。试试:

output_size = 80
相关问题