Когда я учусь строить модель с tensorflow.keras.Model
(тензор потока. версия = 2.0.0), я компилирую свою модель следующим образом:
import tensorflow as tf
x = tf.keras.layers.Input(shape=(2,))
y = tf.keras.layers.Dense(3, activation='softmax')(x)
model = tf.keras.Model(x,y)
model.compile(
loss='binary_crossentropy',
optimizer=tf.keras.optimizers.Adam(1e-4),
metrics=['accuracy']
)
Когда я нужно использовать model.fit
метод, я делаю несколько попыток:
Попытка 1:
model.fit(
x=[[1,1],[2,2]],
y=[[1,1,1],[2,2,2]],
epochs=3
)
Это должно быть правильно, и поэтому результат выполнения будет.
Попытка 2:
model.fit(
x=[[1,1],[2,2]],
y=[[1,1],[2,2]],
epochs=3
)
Этот код должен обработать ошибку, поскольку размеры переменной y не могут адаптироваться к выводу модели, и я получил ошибку ValueError, например Dimensions must be equal, but are 2 and 3 for 'loss/dense_loss/mul' (op: 'Mul') with input shapes: [?,2], [?,3]
. Это все так же, как и ожидалось.
Попытка 3:
model.fit(
x=[[1,1],[2,2]],
y=[[1],[2]],
epochs=3
)
Так что я думаю, что этот код также должен выдавать ошибку, как Attempt 2
, но почему модель может быть оснащена такими данные тренировки? и чему научилась модель?