有预训练好的alexnet模型吗?


Keras, https://keras.io/applications/

  • Xception
  • VGG16
  • VGG19
  • ResNet, ResNetV2, ResNeXt
  • InceptionV3
  • InceptionResNetV2
  • MobileNet
  • MobileNetV2
  • DenseNet
  • NASNet


from keras.applications.vgg19 import preprocess_input

from keras.applications.vgg19 import VGG19base_model = VGG19(weights=imagenet)

model=Model(input=base_model.input,output=base_model.get_layer(block4_pool).output)

#x.shape=[batch_size,224,224,3]x = preprocess_input(x)features = model.predict(x)

keras换不同的模型函数和get_layer的名称就可以提取出想要层的输出,具体领域也有一些公开的模型参数,作特征提取尽量不要使用太简单的卷积网路,特征提取出来的表达性不一定好。


太多了。

CNN经典演算法AlexNet介绍 | 数据学习者官方网站(Datalearner)?

www.datalearner.com图标

这个博客里面有AlexNet相关的解释,最后一部分是代码和预训练的模型。


PaddlePaddle/PaddleHub?

github.com图标

PaddlePaddle的预训练工具PaddleHub可以关注一下


谢邀。keras自带用imagenet预训练好的各种网路,可以了解一下。github上开源的代码有很多搜过了都用不了吗?


Alexnet 成名是 2012 年呀,为啥要用这么」古老「的模型?

高层特征提取的话 VGG19 都嫌老,可以参考一下,Google 给的 Youtube-8M 实在太大,所以准备了预抽取图像特征,用的 Inception-V3 再用 PCA 压缩。


这事我前些日子做过,首先没有找到tf版现成的预训练模型,你需要这样做:

  1. 下载 http://www.cs.toronto.edu/~guerzhoy/tf_alexnet/bvlc_alexnet.npy
  2. 参考下方代码载入,注意:
    1. 对齐scope_name、network
    2. Alexnet包含group=2卷积,但是npy中只有一个group对应的参数,因此这里我给每个group相同的参数。

import tensorflow
import numpy
loads alexnet npy
WEIGHTS_PATH = ROOT/bvlc_alexnet.npy
weights_dict = np.load(WEIGHTS_PATH, encoding=bytes).item()
variable_names = [v.name for v in tf.trainable_variables()]
for op_name in weights_dict:
if op_name in [fc8]:
continue
with tf.variable_scope(SCOPE_NAME, reuse=True):
with tf.variable_scope(op_name, reuse=True):
for data in weights_dict[op_name]:
print(op_name)
if len(data.shape) == 1:
var = tf.get_variable(biases, trainable=False)
sess.run(var.assign(data))
else:
if op_name in [conv2, conv4, conv5]:
data = np.concatenate([data, data], axis=2) # group 2x
var = tf.get_variable(weights, trainable=False)
sess.run(var)
sess.run(var.assign(data))


为什么不用更强的预训练模型?


应有尽有吧。


推荐阅读:
相关文章