Python 如何在Keras中的损失计算过程中检查掩蔽是否正确处理?
我的输入数据具有形状Python 如何在Keras中的损失计算过程中检查掩蔽是否正确处理?,python,tensorflow,keras,neural-network,padding,Python,Tensorflow,Keras,Neural Network,Padding,我的输入数据具有形状(批处理、最大值、嵌入尺寸),并且必须在批处理产生到网络之前进行嵌入和填充。下面是一个2令牌长输入的示例,输入中填充了零填充向量,最大值为maxlen=4: x=np.连接((np.一((1,2,10)),np.零((1,2,10)),轴=1) >>>x 数组([[1,1,1,1,1,1,1,1,1,1,1,1,1.], [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.], [0., 0., 0., 0., 0., 0., 0., 0., 0.,
(批处理、最大值、嵌入尺寸)
,并且必须在批处理产生到网络之前进行嵌入和填充。下面是一个2令牌长输入的示例,输入中填充了零填充向量,最大值为maxlen=4
:
x=np.连接((np.一((1,2,10)),np.零((1,2,10)),轴=1)
>>>x
数组([[1,1,1,1,1,1,1,1,1,1,1,1,1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]])
以下是我用来创建循环模型的函数:
def make_模型(n_output_标签、maxlen、embedsize、rec_单位、density_单位)->模型:
输入=输入(形状=(最大长度,最大尺寸))
x=掩蔽(掩蔽值=0)(输入)
x=双向(LSTM(记录单元,激活=“relu”,返回序列=真))(x)
x=时间分布(密集(密集单位,激活=“relu”))(x)
输出=密集(n_输出_标签,activation=“softmax”)(x)
mod=tf.keras.Model(输入、输出)
mod.compile(
optimizer=tf.keras.optimizers.Adam(),
损失=tf.keras.loss.CategoricalCrossentropy(),
指标=[“准确度”]
)
返回模式
0
(以两者中的为准),这是一种预期行为吗
>mod=make_模型(3,4,10,16,8)
>>>国防部(x)
>>>np.argmax(模数(x),轴=2)
数组([[0,2,0,0]])