有預訓練好的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))


為什麼不用更強的預訓練模型?


應有盡有吧。


推薦閱讀:
相關文章