TensorFlow2-模型子类化ValueError

阿伦

我正在尝试使用TensorFlow 2的模型子分类尝试创建LeNet-300-100密集神经网络。我拥有的代码如下:

batch_size = 32
num_epochs = 20


# Load MNIST dataset-
(X_train, y_train), (X_test, y_test) = tf.keras.datasets.mnist.load_data()

X_train = X_train.astype('float32') / 255.0
X_test = X_test.astype('float32') / 255.0

# Convert class vectors/target to binary class matrices or one-hot encoded values-
y_train = tf.keras.utils.to_categorical(y_train, num_classes)
y_test = tf.keras.utils.to_categorical(y_test, num_classes)

X_train.shape, y_train.shape
# ((60000, 28, 28), (60000, 10))

X_test.shape, y_test.shape
# ((10000, 28, 28), (10000, 10)) 




class LeNet300(Model):
    def __init__(self, **kwargs):
        super(LeNet300, self).__init__(**kwargs)
        
        self.flatten = Flatten()
        self.dense1 = Dense(units = 300, activation = 'relu')
        self.dense2 = Dense(units = 100, activation = 'relu')
        self.op = Dense(units = 10, activation = 'softmax')

    def call(self, inputs):
        x = self.flatten(inputs)
        x = self.dense1(x)
        x = self.dense2(x)
        return self.op(x)




# Instantiate an object using LeNet-300-100 dense model-
model = LeNet300()

# Compile the defined model-
model.compile(
        optimizer=tf.keras.optimizers.Adam(),
        loss=tf.keras.losses.SparseCategoricalCrossentropy(),
        metrics=['accuracy']
        )


# Define early stopping callback-
early_stopping_callback = tf.keras.callbacks.EarlyStopping(
        monitor = 'val_loss', min_delta = 0.001,
        patience = 3)

# Train defined and compiled model-
history = model.fit(
    x = X_train, y = y_train,
    batch_size = batch_size, shuffle = True,
    epochs = num_epochs,
    callbacks = [early_stopping_callback],
    validation_data = (X_test, y_test)
    )

调用“ model.fit()”时,出现以下错误:

ValueError:形状不匹配:标签的形状(接收到(320,))应等于对数的形状,但最后一个尺寸(接收到(32,10))除外。

怎么了

谢谢

兰卡47

损耗SparseCategoricalCrossentropy不需要一键编码就可以计算损耗。他们在文档中提到

当有两个或多个标签类别时,请使用此交叉熵损失函数。我们希望标签以整数形式提供。如果要使用一键表示法提供标签,请使用CategoricalCrossentropy损失。对于y_pred,每个功能应有#个类浮点值,对于y_true,每个功能应有一个浮点值。

结果,您得到了错误。如果您观察到堆栈跟踪,则会在损失函数中出现错误,

    /home/ubuntu/.local/lib/python3.6/site-packages/tensorflow/python/keras/losses.py:1569 sparse_categorical_crossentropy
        y_true, y_pred, from_logits=from_logits, axis=axis)
    /home/ubuntu/.local/lib/python3.6/site-packages/tensorflow/python/util/dispatch.py:201 wrapper
        return target(*args, **kwargs)
    /home/ubuntu/.local/lib/python3.6/site-packages/tensorflow/python/keras/backend.py:4941 sparse_categorical_crossentropy
        labels=target, logits=output)
    /home/ubuntu/.local/lib/python3.6/site-packages/tensorflow/python/util/dispatch.py:201 wrapper
        return target(*args, **kwargs)
    /home/ubuntu/.local/lib/python3.6/site-packages/tensorflow/python/ops/nn_ops.py:4241 sparse_softmax_cross_entropy_with_logits_v2
        labels=labels, logits=logits, name=name)
    /home/ubuntu/.local/lib/python3.6/site-packages/tensorflow/python/util/dispatch.py:201 wrapper
        return target(*args, **kwargs)
    /home/ubuntu/.local/lib/python3.6/site-packages/tensorflow/python/ops/nn_ops.py:4156 sparse_softmax_cross_entropy_with_logits
        logits.get_shape()))

    ValueError: Shape mismatch: The shape of labels (received (320,)) should equal the shape of logits except for the last dimension (received (32, 10)).

我建议使用CategoricalCrossentropy

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Tensorflow模型子类化多输入

来自分类Dev

Tensorflow 2“ InaccessibleTensorError”中的错误子类化模型

来自分类Dev

Tensorflow 2 Keras嵌套模型子类化-总参数为零

来自分类Dev

如何在具有tensorflow2和keras的多GPU上训练模型?

来自分类Dev

如何仅在Tensorflow2中保存张量而不是模型

来自分类Dev

使用@tffunction的Tensorflow2警告

来自分类Dev

带结构的Controller的Go模型子类化

来自分类Dev

子类化django模型不包含Manager

来自分类Dev

Swift 2中的Parse.com子类化

来自分类Dev

keras tensorflow2获得训练数据的结果

来自分类Dev

Tensorflow2关于形状不匹配的警告,仍在培训

来自分类Dev

TensorFlow2替代tf.io.gfile.Open()?

来自分类Dev

TensorFlow2继续安装相同版本

来自分类Dev

Keras功能模型产生子类化错误

来自分类Dev

Django:如何处理模型子类化和IntegrityErros?

来自分类Dev

子类化NSManagedObject的子类

来自分类Dev

Tensorflow2 LSTM(cuDNN args)与tensorflow1 CuDNNLSTM实现差异

来自分类Dev

GKGraph错误地计算了带有GKGraphNode2D子类化节点的路径

来自分类Dev

当LoginView是初始视图时,在情节提要中对UITabBarController进行子类化[Swift2,Xcode 7]

来自分类Dev

子类化的子类LinearLayout类

来自分类Dev

tf.nn.ctc_beam_search_decoder()不支持TensorFlow2中的GPU吗?

来自分类Dev

子类化未来类

来自分类Dev

Python动态子类化

来自分类Dev

子类化按钮

来自分类Dev

子类化Avro记录?

来自分类Dev

子类化SKSpriteNode

来自分类Dev

如何子类化NSTextAttachment?

来自分类Dev

SKSpriteNode子类化Swift

来自分类Dev

子类化LinearLayout