keras topN显示,自编写代码案例
更新时间:2020年7月3日 11:24 点击:1889
对于使用已经训练好的模型,比如VGG,RESNET等,keras都自带了一个keras.applications.imagenet_utils.decode_predictions的方法,有很多限制:
def decode_predictions(preds, top=5): """Decodes the prediction of an ImageNet model. # Arguments preds: Numpy tensor encoding a batch of predictions. top: Integer, how many top-guesses to return. # Returns A list of lists of top class prediction tuples `(class_name, class_description, score)`. One list of tuples per sample in batch input. # Raises ValueError: In case of invalid shape of the `pred` array (must be 2D). """ global CLASS_INDEX if len(preds.shape) != 2 or preds.shape[1] != 1000: raise ValueError('`decode_predictions` expects ' 'a batch of predictions ' '(i.e. a 2D array of shape (samples, 1000)). ' 'Found array with shape: ' + str(preds.shape)) if CLASS_INDEX is None: fpath = get_file('imagenet_class_index.json', CLASS_INDEX_PATH, cache_subdir='models', file_hash='c2c37ea517e94d9795004a39431a14cb') with open(fpath) as f: CLASS_INDEX = json.load(f) results = [] for pred in preds: top_indices = pred.argsort()[-top:][::-1] result = [tuple(CLASS_INDEX[str(i)]) + (pred[i],) for i in top_indices] result.sort(key=lambda x: x[2], reverse=True) results.append(result) return results
把重要的东西挖出来,然后自己敲,这样就OK了,下例以MNIST数据集为例:
import keras from keras.models import Sequential from keras.layers import Dense import numpy as np import tflearn import tflearn.datasets.mnist as mnist def decode_predictions_custom(preds, top=5): CLASS_CUSTOM = ["0","1","2","3","4","5","6","7","8","9"] results = [] for pred in preds: top_indices = pred.argsort()[-top:][::-1] result = [tuple(CLASS_CUSTOM[i]) + (pred[i]*100,) for i in top_indices] results.append(result) return results x_train, y_train, x_test, y_test = mnist.load_data(one_hot=True) model = Sequential() model.add(Dense(units=64, activation='relu', input_dim=784)) model.add(Dense(units=10, activation='softmax')) model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy']) model.fit(x_train, y_train, epochs=10, batch_size=128) # score = model.evaluate(x_test, y_test, batch_size=128) # print(score) preds = model.predict(x_test[0:1,:]) p = decode_predictions_custom(preds) for (i,(label,prob)) in enumerate(p[0]): print("{}. {}: {:.2f}%".format(i+1, label,prob)) # 1. 7: 99.43% # 2. 9: 0.24% # 3. 3: 0.23% # 4. 0: 0.05% # 5. 2: 0.03%
补充知识:keras简单的去噪自编码器代码和各种类型自编码器代码
我就废话不多说了,大家还是直接看代码吧~
start = time() from keras.models import Sequential from keras.layers import Dense, Dropout,Input from keras.layers import Embedding from keras.layers import Conv1D, GlobalAveragePooling1D, MaxPooling1D from keras import layers from keras.models import Model # Parameters for denoising autoencoder nb_visible = 120 nb_hidden = 64 batch_size = 16 # Build autoencoder model input_img = Input(shape=(nb_visible,)) encoded = Dense(nb_hidden, activation='relu')(input_img) decoded = Dense(nb_visible, activation='sigmoid')(encoded) autoencoder = Model(input=input_img, output=decoded) autoencoder.compile(loss='mean_squared_error',optimizer='adam',metrics=['mae']) autoencoder.summary() # Train ### 加一个early_stooping import keras early_stopping = keras.callbacks.EarlyStopping( monitor='val_loss', min_delta=0.0001, patience=5, verbose=0, mode='auto' ) autoencoder.fit(X_train_np, y_train_np, nb_epoch=50, batch_size=batch_size , shuffle=True, callbacks = [early_stopping],verbose = 1,validation_data=(X_test_np, y_test_np)) # Evaluate evaluation = autoencoder.evaluate(X_test_np, y_test_np, batch_size=batch_size , verbose=1) print('val_loss: %.6f, val_mean_absolute_error: %.6f' % (evaluation[0], evaluation[1])) end = time() print('耗时:'+str((end-start)/60))
keras各种自编码代码
以上这篇keras topN显示,自编写代码案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持猪先飞。
相关文章
在Keras中利用np.random.shuffle()打乱数据集实例
这篇文章主要介绍了在Keras中利用np.random.shuffle()打乱数据集实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-16解决在keras中使用model.save()函数保存模型失败的问题
这篇文章主要介绍了解决在keras中使用model.save()函数保存模型失败的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-05-21- 这篇文章主要介绍了解决Keras 中加入lambda层无法正常载入模型问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-17
- 这篇文章主要介绍了keras.layer.input()用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-17
- 这篇文章主要介绍了keras的三种模型实现与区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-04
完美解决TensorFlow和Keras大数据量内存溢出的问题
这篇文章主要介绍了完美解决TensorFlow和Keras大数据量内存溢出的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-04- 这篇文章主要介绍了利用keras使用神经网络预测销量操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-08
- 这篇文章主要介绍了使用keras实现孪生网络中的权值共享教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-11
- 这篇文章主要介绍了keras:model.compile损失函数的用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-02
- 这篇文章主要介绍了keras输出预测值和真实值方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-28
- 这篇文章主要介绍了keras实现基于孪生网络的图片相似度计算方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-12
- 这篇文章主要介绍了keras实现调用自己训练的模型,并去掉全连接层,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-10
- 今天小编就为大家分享一篇PyTorch和Keras计算模型参数的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-30
- 这篇文章主要介绍了使用Keras预训练好的模型进行目标类别预测详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-28
- 这篇文章主要介绍了使用Keras画神经网络准确性图教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-16
Keras 在fit_generator训练方式中加入图像random_crop操作
这篇文章主要介绍了Keras 在fit_generator训练方式中加入图像random_crop操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-04- 这篇文章主要介绍了keras实现多GPU或指定GPU的使用介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-18
教你如何在pycharm中安装opencv,tensorflow,keras
今天通过本教程教大家如何在pycharm中安装opencv,tensorflow,keras,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-08-09- 本文主要利用U-Net网络结构实现了多类的语义分割,并展示了部分测试效果,希望对你有用!...2020-06-11
- 这篇文章主要介绍了keras 自定义loss层+接受输入实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-29