我不知道为什么最后一行显示 tar 是 0 并且它的形状是 (None, None)。
但是,最后的第二行显示 tar 的形状是 (64, 27)。
如何让焦油不是无?
train_step_signature = [
tf.TensorSpec(shape=(None, None), dtype=tf.int64),
tf.TensorSpec(shape=(None, None), dtype=tf.int64),
]
@tf.function(input_signature=train_step_signature)
def train_step(inp, tar):
print(tar)
for epoch in range(EPOCHS):
start = time.time()
train_loss.reset_states()
train_accuracy.reset_states()
# inp -> portuguese, tar -> english
for (batch, (inp, tar)) in enumerate(train_dataset):
print(tar)
train_step(inp, tar)
break
输出是:
tf.Tensor(
[[1942 777 1186 ... 0 0 0]
[1942 22 164 ... 0 0 0]
[1942 1 410 ... 0 0 0]
...
[1942 824 895 ... 0 0 0]
[1942 393 356 ... 0 0 0]
[1942 1518 1209 ... 0 0 0]], shape=(64, 27), dtype=int64)
Tensor("tar:0", shape=(None, None), dtype=int64)
在第九行添加两行时,我得到错误的句子:
TypeError: unsupported operand type(s) for -: 'NoneType' and 'int'
如何解决这个问题?
train_step_signature = [
tf.TensorSpec(shape=(None, None), dtype=tf.int64),
tf.TensorSpec(shape=(None, None), dtype=tf.int64),
]
@tf.function(input_signature=train_step_signature)
def train_step(inp, tar):
print(tar)
img=tf.pad(tar[:, 0:2], [[0, 0], [0, tar.shape[1]-2]])
print(img)
for epoch in range(EPOCHS):
start = time.time()
train_loss.reset_states()
train_accuracy.reset_states()
# inp -> portuguese, tar -> english
for (batch, (inp, tar)) in enumerate(train_dataset):
print(tar)
train_step(inp, tar)
break