我是 Tensorflow 领域的新手,正在研究 mnist 数据集分类的简单示例。我想知道除了准确性和损失(并可能显示它们)之外,如何获得其他指标(例如精度、召回率等)。这是我的代码:
from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
from tensorflow.keras.callbacks import ModelCheckpoint
from tensorflow.keras.callbacks import TensorBoard
import os
#load mnist dataset
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
#create and compile the model
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model.summary()
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
#model checkpoint (only if there is an improvement)
checkpoint_path = "logs/weights-improvement-{epoch:02d}-{accuracy:.2f}.hdf5"
cp_callback = ModelCheckpoint(checkpoint_path, monitor='accuracy',save_best_only=True,verbose=1, mode='max')
#Tensorboard
NAME = "tensorboard_{}".format(int(time.time())) #name of …Run Code Online (Sandbox Code Playgroud) 我正在研究带有图像和文本的多模式分类器。我已经成功开发了两个模型,一个是用于图像的 CNN,另一个是基于 BERT 的文本模型。两个模型的最后一层都是具有n 个单元和softmax激活的 Dense (其中 n 是类数)。Keras 提供了不同的合并层来组合这些模型的输出向量(https://keras.io/api/layers/merging_layers/),然后可以创建一个新的网络,但我的问题是:有没有更好的方法结合单个模型的决策?也许根据某种标准对向量内的值进行加权?目前我已经使用一个简单的串联层开发了我的模型,如下所示:
image_side = images_model(image_input)
text_side = text_model(text_input)
# Concatenation
merged = layers.Concatenate(name='Concatenation')([image_side, text_side])
merged = layers.Dense(128, activation = 'relu', name='Dense_128')(merged)
merged = layers.Dropout(0.2)(merged)
output = layers.Dense(nClasses, activation='softmax', name = "class")(merged)
Run Code Online (Sandbox Code Playgroud)
先感谢您!