Как исправить проблему Keras?

Есть самая простая модель Keras. Нужно выдать последнюю цифру из массива:

import numpy as np
import matplotlib.pyplot as plt
from tensorflow import keras
from tensorflow.keras.layers import Dense

c = np.array([
    [1, 1, 1],
    [1, 1, 0],
    [1, 0, 1],
    [1, 0, 0],
    [0, 1, 1],
    [0, 1, 0],
    [0, 0, 1],
    [0, 0, 0]
])
f = np.array([1, 0, 1, 0, 1, 0, 1, 0])

model = keras.Sequential()
model.add(Dense(units=1, activation='linear'))

model.compile(loss='mean_squared_error', optimizer=keras.optimizers.Adam(0.1))

history = model.fit(c, f, epochs=500, verbose=0)

print(model.predict([1, 0, 1]), model.get_weights())

plt.plot(history.history['loss'])
plt.grid(True)
plt.show()

...запускаю, но пишет ошибку:

    Traceback (most recent call last):
  File "C:\Users\Rubix\*\*.py", line 28, in <module>
    print(model.predict([1, 1, 1]), model.get_weights())
  File "C:\Users\Rubix\AppData\Local\Programs\Python\Python37\lib\site-packages\
tensorflow\python\keras\engine\training.py", line 1692, in predict
    tmp_batch_outputs = self.predict_function(iterator)
  File "C:\Users\Rubix\AppData\Local\Programs\Python\Python37\lib\site-packages\
tensorflow\python\eager\def_function.py", line 867, in __call__
    result = self._call(*args, **kwds)
  File "C:\Users\Rubix\AppData\Local\Programs\Python\Python37\lib\site-packages\
tensorflow\python\eager\def_function.py", line 911, in _call
    self._initialize(args, kwds, add_initializers_to=initializers)
  File "C:\Users\Rubix\AppData\Local\Programs\Python\Python37\lib\site-packages\
tensorflow\python\eager\def_function.py", line 749, in _initialize
    *args, **kwds))
  File "C:\Users\Rubix\AppData\Local\Programs\Python\Python37\lib\site-packages\
tensorflow\python\eager\function.py", line 3045, in _get_concrete_function_inter
nal_garbage_collected
    graph_function, _ = self._maybe_define_function(args, kwargs)
  File "C:\Users\Rubix\AppData\Local\Programs\Python\Python37\lib\site-packages\
tensorflow\python\eager\function.py", line 3439, in _maybe_define_function
    graph_function = self._create_graph_function(args, kwargs)
  File "C:\Users\Rubix\AppData\Local\Programs\Python\Python37\lib\site-packages\
tensorflow\python\eager\function.py", line 3284, in _create_graph_function
    capture_by_value=self._capture_by_value),
  File "C:\Users\Rubix\AppData\Local\Programs\Python\Python37\lib\site-packages\
tensorflow\python\framework\func_graph.py", line 998, in func_graph_from_py_func

    func_outputs = python_func(*func_args, **func_kwargs)
  File "C:\Users\Rubix\AppData\Local\Programs\Python\Python37\lib\site-packages\
tensorflow\python\eager\def_function.py", line 657, in wrapped_fn
    out = weak_wrapped_fn().__wrapped__(*args, **kwds)
  File "C:\Users\Rubix\AppData\Local\Programs\Python\Python37\lib\site-packages\
tensorflow\python\framework\func_graph.py", line 985, in wrapper
    raise e.ag_error_metadata.to_exception(e)
ValueError: in user code:

    C:\Users\Rubix\AppData\Local\Programs\Python\Python37\lib\site-packages\tens
orflow\python\keras\engine\training.py:1537 predict_function  *
        return step_function(self, iterator)
    C:\Users\Rubix\AppData\Local\Programs\Python\Python37\lib\site-packages\tens
orflow\python\keras\engine\training.py:1527 step_function  **
        outputs = model.distribute_strategy.run(run_step, args=(data,))
    C:\Users\Rubix\AppData\Local\Programs\Python\Python37\lib\site-packages\tens
orflow\python\distribute\distribute_lib.py:1280 run
        return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs
)
    C:\Users\Rubix\AppData\Local\Programs\Python\Python37\lib\site-packages\tens
orflow\python\distribute\distribute_lib.py:2820 call_for_each_replica
        return self._call_for_each_replica(fn, args, kwargs)
    C:\Users\Rubix\AppData\Local\Programs\Python\Python37\lib\site-packages\tens
orflow\python\distribute\distribute_lib.py:3588 _call_for_each_replica
        return fn(*args, **kwargs)
    C:\Users\Rubix\AppData\Local\Programs\Python\Python37\lib\site-packages\tens
orflow\python\keras\engine\training.py:1520 run_step  **
        outputs = model.predict_step(data)
    C:\Users\Rubix\AppData\Local\Programs\Python\Python37\lib\site-packages\tens
orflow\python\keras\engine\training.py:1493 predict_step
        return self(x, training=False)
    C:\Users\Rubix\AppData\Local\Programs\Python\Python37\lib\site-packages\tens
orflow\python\keras\engine\base_layer.py:1013 __call__
        input_spec.assert_input_compatibility(self.input_spec, inputs, self.name
)
    C:\Users\Rubix\AppData\Local\Programs\Python\Python37\lib\site-packages\tens
orflow\python\keras\engine\input_spec.py:259 assert_input_compatibility
        ' but received input with shape ' + display_shape(x.shape))

    ValueError: Input 0 of layer sequential is incompatible with the layer: expe
cted axis -1 of input shape to have value 3 but received input with shape (None,
 1)


Process returned 1 (0x1)        execution time : 5.596 s

Как исправить проблему?


Ответы (0 шт):