Я пытаюсь предсказать 3 свойства материала на основе 4 входных данных.
входы: скорость нагрева, температура, давление, время
выходы: плотность, размер зерна, твердость
Я уже пытался использовать np.array()
, tf.reshape()
и np.ndarray()
ничего не получалось
def build_model():
model = keras.Sequential([
layers.Dense(4, activation = tf.nn.relu, input_shape = [len(train_dataset.keys())]),
layers.Dense(64, activation = tf.nn.sigmoid),
layers.Dense(64, activation = tf.nn.relu),
layers.Dense(64, activation = tf.nn.relu),
layers.Dense(3)
])
optimizer = keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=None, decay=0.0)
model.compile(loss = 'mean_squared_error',
optimizer = optimizer,
metrics = ['mean_absolute_error', 'mean_squared_error'])
return model
model.summary()
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_35 (Dense) (None, 4) 20
_________________________________________________________________
dense_36 (Dense) (None, 64) 320
_________________________________________________________________
dense_37 (Dense) (None, 64) 4160
_________________________________________________________________
dense_38 (Dense) (None, 64) 4160
_________________________________________________________________
dense_39 (Dense) (None, 3) 195
=================================================================
Total params: 8,855
Trainable params: 8,855
Non-trainable params: 0
_________________________________________________________________
print(np.array(normed_train_data))
print(train_labels)
[[0.78865053 0.75882112 0.66666667 1. ]
[0.78865053 0.92764634 1. 0.33333333]
[1. 0.84323373 1. 0.33333333]
[1. 0.95176422 1. 0.33333333]
[0.78865053 0.95176422 1. 0. ]
[0.78865053 0.95176422 1. 0.33333333]
[0.78865053 0.92764634 1. 0.66666667]
[1. 0.92764634 1. 0.33333333]
[1. 0.87941056 1. 0.33333333]
[0.78865053 0.97588211 1. 0.2 ]
[0.78865053 0.90352845 0.66666667 1. ]
[1. 0.80705689 1. 0.33333333]
[0.78865053 1. 0.66666667 0.66666667]
[1. 0.83117478 1. 0.33333333]
[0.78865053 0.97588211 1. 0.2 ]
[0.78865053 1. 1. 0.2 ]
[0.78865053 0.71058534 0.66666667 1. ]
[0.78865053 0.90352845 1. 0.33333333]
[0.78865053 0.95176422 0.66666667 1. ]
[0.78865053 0.85046909 0.66666667 1. ]
[1. 0.80705689 1. 0.33333333]]
[[2 66.5
28 96.8
13 96.4
10 99.0
26 98.2
24 100.0
27 97.6
11 99.0
17 96.2
22 100.0
5 81.8
16 71.4
8 96.0
14 91.9
23 100.0
20 100.0
1 65.8
29 90.3
6 94.4
4 71.8
18 91.9
Name: density, dtype: float64], [2 4.000
28 0.688
13 0.474
10 0.564
26 0.688
24 0.811
27 0.688
11 0.564
17 0.082
22 25.000
5 4.000
16 0.564
8 4.000
14 0.444
23 0.877
20 51.000
1 4.000
29 0.688
6 4.000
4 4.000
18 0.074
Name: grain size, dtype: float64], [2 400000000
28 29400000000
13 31800000000
10 31800000000
26 32300000000
24 35600000000
27 31800000000
11 31800000000
17 31800000000
22 30700000000
5 6700000000
16 31800000000
8 33300000000
14 31800000000
23 34200000000
20 28500000000
1 200000000
29 22800000000
6 32000000000
4 2400000000
18 31800000000
Name: hardness, dtype: int64]]
class PrintDot(keras.callbacks.Callback):
def on_epoch_end(self,epoch,logs):
if epoch % 100 == 0: print('')
print('.',end='')
EPOCH=1000
history = model.fit(normed_train_data, train_labels,
epochs=EPOCH, validation_split = 0.2, verbose=0,
callbacks=[PrintDot()])
ValueError: Ошибка при проверке целевого объекта модели: список массивов Numpy, передаваемых в вашу модель, отличается от ожидаемого размера модели. Ожидается увидеть 1 массив (ов), но вместо этого получит следующий список из 3 массивов
Я ожидаю, что машина научит меня выдавать эти 3 выхода, отобразит их с соответствующим реальным значением и получит ошибку.