def loss(model, xs, ts, uss=None):
model.reset_state()
tags = model([Variable(
np.array([x], dtype=np.int32)
) for x in xs])
zss = []
d = Variable(np.array(0, dtype=np.float32))
for t, (y, zs) in zip(ts, tags):
d += cf.sigmoid_cross_entropy(
y, Variable(np.array([[t]], dtype=np.int32))
)
if t:
zss.append(zs)
if uss:
assert len(uss) == len(zss)
for us, zs in zip(uss, zss):
for u, z in zip(us, zs):
d += cf.softmax_cross_entropy(
z, Variable(np.array([u], dtype=np.int32))
)
return d
评论列表
文章目录