形状在tf.data.Dataset.from_tensor_slices的最后记录中不兼容

DY92

我已经在Tensorflow 2.0中实现了seq2seq转换模型

但是在训练过程中,出现以下错误:

ValueError: Shapes (2056, 10, 10000) and (1776, 10, 10000) are incompatible

我的数据集中有10000条记录。从第一条记录开始,直到8224条记录的尺寸匹配。但是对于最后的1776条记录,我得到上面提到的错误,只是因为我的batch_size大于剩余的记录数。这是我的代码:

max_seq_len_output = 10
n_words = 10000
batch_size = 2056

model = Model_translation(batch_size = batch_size,embed_size = embed_size,total_words = n_words , dropout_rate = dropout_rate,num_classes = n_words,embedding_matrix = embedding_matrix)
dataset_train = tf.data.Dataset.from_tensor_slices((encoder_input,decoder_input,decoder_output))
dataset_train = dataset_train.shuffle(buffer_size = 1024).batch(batch_size)


loss_object = tf.keras.losses.CategoricalCrossentropy()#used in backprop
optimizer = tf.keras.optimizers.Adam(learning_rate=0.001)

train_loss = tf.keras.metrics.Mean(name='train_loss')#mean of the losses per observation
train_accuracy =tf.keras.metrics.CategoricalAccuracy(name='train_accuracy')


##### no @tf.function here 
def training(X_1,X_2,y):
    #creation of one-hot-encoding, because if I would do it out of the loop if would have RAM problem
    y_numpy = y.numpy()
    Y = np.zeros((batch_size,max_seq_len_output,n_words),dtype='float32')
    for i, d in enumerate(y_numpy):
        for t, word in enumerate(d):
            if word != 0:
                Y[i, t, word] = 1

    Y = tf.convert_to_tensor(Y)
    #predictions
    with tf.GradientTape() as tape:#Trainable variables (created by tf.Variable or tf.compat.v1.get_variable, where trainable=True is default in both cases) are automatically watched. 
        predictions =  model(X_1,X_2)
        loss = loss_object(Y,predictions)

    gradients = tape.gradient(loss,model.trainable_variables)
    optimizer.apply_gradients(zip(gradients,model.trainable_variables))
    train_loss(loss) 
    train_accuracy(Y,predictions)
    del Y
    del y_numpy


EPOCHS = 70

for epoch in range(EPOCHS):
    for X_1,X_2,y in dataset_train:
       training(X_1,X_2,y)
    template = 'Epoch {}, Loss: {}, Accuracy: {}'
    print(template.format(epoch+1,train_loss.result(),train_accuracy.result()*100))
    # Reset the metrics for the next epoch
    train_loss.reset_states()
    train_accuracy.reset_states() 

我该如何解决这个问题?

骄傲

一种解决方案是在批量处理过程中将剩余的

dataset_train = dataset_train.shuffle(buffer_size = 1024).batch(batch_size, drop_remainder=True)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何为接受各种形状的多个输入的`tf.keras`模型创建`tf.data.Dataset`?

来自分类Dev

tf.data.dataset:如何为保证输出某些形状的数据集(形状未定义)分配形状?

来自分类Dev

为什么“ tf.data.Dataset.from_tensor_slices”在输出中打印图像的所有路径?

来自分类Dev

tf.data.Dataset的输入形状不被model.fit()接受

来自分类Dev

ValueError:使用tf.data.Dataset.from_tensor_slices时无法将非矩形Python序列转换为Tensor

来自分类Dev

Tensorflow:tf.contrib.data 中 dataset.map() 的类型不兼容

来自分类Dev

使用tf.data.Dataset的“ layer sequence_1的输入0与该层不兼容”

来自分类Dev

在TF 2.0中将tf.Tensor转换为tf.data.Dataset.map中的numpy数组(图形模式)

来自分类Dev

tf model.fit()中的batch_size与tf.data.Dataset中的batch_size

来自分类Dev

Tensorflow:如何从CPU tf.data.Dataset(from_generator)预取GPU上的数据

来自分类Dev

如何在tf.data.Dataset.from_generator中保留字典键?

来自分类Dev

Tensorflow 2.0:在多输入场景中构造tf.data.Dataset输出的最佳方法

来自分类Dev

如何从tf.data.Dataset的填充批次中获得序列长度?

来自分类Dev

在时序分析中在tf.data.dataset中进行批处理

来自分类Dev

`tf.data.Dataset.repeat()` 是否在内存中缓冲整个数据集?

来自分类Dev

如何使用 Tensorflow 中的其他示例转换扩展 tf.data.Dataset

来自分类Dev

从带有谓词(如过滤器)的 tf.data.Dataset 中获取

来自分类Dev

如何在TF 2中使用带有自定义函数的tf.data.Dataset.interleave()?

来自分类Dev

Keras / TF的不兼容形状错误中的未知值

来自分类Dev

tf.data.Dataset.take()返回随机样本吗?

来自分类Dev

tf.data.Dataset在除PrefetchDataset之外的CPU上运行。

来自分类Dev

使用tf.data.Dataset训练DL模型

来自分类Dev

Numpy 4D数组到tf.data.dataset

来自分类Dev

使用 tf.data.Dataset 评估每 N 步

来自分类Dev

如何只通过 tf.data.dataset 一次?

来自分类Dev

TensorFlow:将tf.Dataset转换为tf.Tensor

来自分类Dev

如何在使用@ tf.function装饰的函数中的tf.data.Dataset上使用for循环来操纵和返回tf.Variable?

来自分类Dev

如何在tf.data.Dataset生成器中使用tf.keras模型?

来自分类Dev

从.tfrecord到tf.data.Dataset到tf.keras.model.fit

Related 相关文章

  1. 1

    如何为接受各种形状的多个输入的`tf.keras`模型创建`tf.data.Dataset`?

  2. 2

    tf.data.dataset:如何为保证输出某些形状的数据集(形状未定义)分配形状?

  3. 3

    为什么“ tf.data.Dataset.from_tensor_slices”在输出中打印图像的所有路径?

  4. 4

    tf.data.Dataset的输入形状不被model.fit()接受

  5. 5

    ValueError:使用tf.data.Dataset.from_tensor_slices时无法将非矩形Python序列转换为Tensor

  6. 6

    Tensorflow:tf.contrib.data 中 dataset.map() 的类型不兼容

  7. 7

    使用tf.data.Dataset的“ layer sequence_1的输入0与该层不兼容”

  8. 8

    在TF 2.0中将tf.Tensor转换为tf.data.Dataset.map中的numpy数组(图形模式)

  9. 9

    tf model.fit()中的batch_size与tf.data.Dataset中的batch_size

  10. 10

    Tensorflow:如何从CPU tf.data.Dataset(from_generator)预取GPU上的数据

  11. 11

    如何在tf.data.Dataset.from_generator中保留字典键?

  12. 12

    Tensorflow 2.0:在多输入场景中构造tf.data.Dataset输出的最佳方法

  13. 13

    如何从tf.data.Dataset的填充批次中获得序列长度?

  14. 14

    在时序分析中在tf.data.dataset中进行批处理

  15. 15

    `tf.data.Dataset.repeat()` 是否在内存中缓冲整个数据集?

  16. 16

    如何使用 Tensorflow 中的其他示例转换扩展 tf.data.Dataset

  17. 17

    从带有谓词(如过滤器)的 tf.data.Dataset 中获取

  18. 18

    如何在TF 2中使用带有自定义函数的tf.data.Dataset.interleave()?

  19. 19

    Keras / TF的不兼容形状错误中的未知值

  20. 20

    tf.data.Dataset.take()返回随机样本吗?

  21. 21

    tf.data.Dataset在除PrefetchDataset之外的CPU上运行。

  22. 22

    使用tf.data.Dataset训练DL模型

  23. 23

    Numpy 4D数组到tf.data.dataset

  24. 24

    使用 tf.data.Dataset 评估每 N 步

  25. 25

    如何只通过 tf.data.dataset 一次?

  26. 26

    TensorFlow:将tf.Dataset转换为tf.Tensor

  27. 27

    如何在使用@ tf.function装饰的函数中的tf.data.Dataset上使用for循环来操纵和返回tf.Variable?

  28. 28

    如何在tf.data.Dataset生成器中使用tf.keras模型?

  29. 29

    从.tfrecord到tf.data.Dataset到tf.keras.model.fit

热门标签

归档