Входные данные x1
и клавиши ix1
сортируются перед подачей на модель. Поэтому они сопоставляются друг с другом в отсортированном порядке.
Возьмите примеры в вашем случае, если мы изменим x1
ключи на ['5', '3', '2']
и ix1
на ['1', '2', '3']
, то они будут объединены с друг с другом в обратной последовательности.
Насколько мне известно, если мы определили ix1
и x1
с одинаковыми ключами, все будет хорошо.
Ниже приведен мой тестовый код :
import tensorflow as tf
from tensorflow.keras import layers
import numpy as np
class IL(layers.Layer):
def __init__(self):
super().__init__()
def call(self,inputs,training=True):
return inputs
il = IL()
aa = tf.keras.Input((2,), name='a')
bb = tf.keras.Input((2,), name='b')
cc = tf.keras.Input((2,), name='c')
ix1 = {'1':cc,'2':aa,'3':bb}
out1 = il(ix1)
model = tf.keras.Model(ix1, [out1])
x1 = {'5': np.arange(0,2,dtype=np.float32).reshape(-1,2),\
'3': np.arange(10,12,dtype=np.float32).reshape(-1,2),
'1': np.arange(20,22,dtype=np.float32).reshape(-1,2)}
y_pred = model(x1,training=True)
print(y_pred)
Вывод:
[{'1': <tf.Tensor: shape=(1, 2), dtype=float32, numpy=array([[20., 21.]], dtype=float32)>,
'2': <tf.Tensor: shape=(1, 2), dtype=float32, numpy=array([[10., 11.]], dtype=float32)>,
'3': <tf.Tensor: shape=(1, 2), dtype=float32, numpy=array([[0., 1.]], dtype=float32)>}]
Воспроизведение кодирования ~