IIUC,你应该可以用同样的方法直接做到这一点:
import tensorflow as tf
json_file = open('/content/resnet-model.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
loaded_model_json = loaded_model_json.replace('"activation":"softmax"', '"activation":"linear"')
model = tf.keras.models.model_from_json(loaded_model_json)
image = tf.keras.preprocessing.image.load_img('/content/sample-image.jpeg')
image = tf.constant([tf.keras.preprocessing.image.img_to_array(image)])
logits = model(image)
probs = tf.nn.softmax(logits)
您还可以使用
reverse
一个
softmax
功能:
def inv_softmax(x, C):
return tf.math.log(x) + C
outputs = tf.keras.layers.Lambda(lambda x : inv_softmax(x, tf.math.log(10.)),name='inv_softmax')(model.output)
new_model = tf.keras.Model(model.input, outputs)
logits = new_model(image)
probs = tf.nn.softmax(logits)
或者干脆放下最后一层,用
linear
激活功能。