0

我不知道为什么最后一行显示 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
4

0 回答 0