attribute-aware-attention代碼復(fù)現(xiàn)與解析

1. 運(yùn)行環(huán)境

Python 2.7
pip install scikit-learn
pip install Pillow
pip install keras==1.2.1 (有版本要求翎卓,最好與這個(gè)一致)
pip install theano==0.9 (之前是1.0.4會(huì)報(bào)錯(cuò))

1.1 keras中獲取shape的正確方法

在keras的網(wǎng)絡(luò)中握侧,如果用layer_name.shape的方式獲取shape信息將會(huì)返還tensorflow.python.framework.tensor_shape.TensorShape其中包含的是tensorflow.python.framework.tensor_shape.Dimension

正確的方式是使用

import keras.backend as K
K.int_shape(laye_name)

2. 代碼解析

2.1 語句解析

代碼:model_raw = eval(net)(input_tensor=inputs, include_top=False, weights='imagenet')
上一句代碼執(zhí)行時(shí)會(huì)下載如下文件(可以直接下載好埋泵,放到對應(yīng)文件夾下):
Downloading data from https://github.com/fchollet/deep-learning-models/releases/download/v0.1/vgg16_weights_th_dim_ordering_th_kernels_notop.h5

文件夾目錄:C:\Users\xpb.keras\models

2.2

Layer (type)                     Output Shape          Param #     Connected to                     
====================================================================================================
input_1 (InputLayer)             (None, 3, 448, 448)   0                                            
____________________________________________________________________________________________________
block1_conv1 (Convolution2D)     (None, 64, 448, 448)  1792        input_1[0][0]      
____________________________________________________________________________________________________
..........................省略普通的網(wǎng)絡(luò)結(jié)構(gòu).......................
____________________________________________________________________________________________________
block5_conv3 (Convolution2D)     (None, 512, 28, 28)   2359808     block5_conv2[0][0]               
____________________________________________________________________________________________________
block5_pool (MaxPooling2D)       (None, 512, 14, 14)   0           block5_conv3[0][0]               
____________________________________________________________________________________________________
reshape_layer (Reshape)          (None, 512, 196)      0           block5_pool[0][0]                
____________________________________________________________________________________________________
permute_1 (Permute)              (None, 196, 512)      0           reshape_layer[0][0]              
____________________________________________________________________________________________________
convolution1d_1 (Convolution1D)  (None, 196, 512)      262656      permute_1[0][0]    
____________________________________________________________________________________________________ 
activation_57 (Activation)       (None, 196, 512)      0           batchnormalization_57[0][0]      
____________________________________________________________________________________________________
p0_avg_pool (GlobalAveragePoolin (None, 512)           0           activation_1[0][0]               
____________________________________________________________________________________________________
attr0_avg_pool (GlobalAveragePoo (None, 512)           0           activation_3[0][0]               
____________________________________________________________________________________________________
attr1_avg_pool (GlobalAveragePoo (None, 512)           0           activation_5[0][0]          

region_attention (Activation)    (None, 196)         

3.

3.1 keras和TensorFlow版本不一致

ImportError: Keras requires TensorFlow 2.2 or higher. Install TensorFlow via pip install tensorflow

TensorFlow 1.10
pip install keras==2.2.0
pip install keras==1.2.1

3.2

ValueError: Negative dimension size caused by subtracting 2 from 1 for 'block2_pool/MaxPool' (op: 'MaxPool') with input shapes: [?,1,224,128].

3.3 如何將python的keras backend換為theano

keras backend默認(rèn)為TensorFlow ,換為theano慕的,

import os
os.environ['KERAS_BACKEND']='theano'
import keras
import keras.backend as K
K.set_image_dim_ordering('th')

3.4

IOError: Unable to open file (truncated file: eof = 294912, sblock->base_addr = 0, stored_eof = 58889096)

原因是,下載模型的時(shí)候未完成蒂教,重新下載就行了追迟。

解決方案

找到.keras/model這個(gè)文件夾,將下載未完成的.h5文件刪除

我的路徑為C:\Users.keras\models

3.5

Traceback (most recent call last):
  File "F:/PycharmProjects/attribute-aware-attention-master/cub_demo.py", line 95, in <module>
    id_prob,id_pool,id_fea_map = init_classification(share_fea_map, emb_dim, nb_classes, name='p0')
  File "F:/PycharmProjects/attribute-aware-attention-master/cub_demo.py", line 66, in init_classification
    fea_map = BatchNormalization(axis=2)(fea_map)
  File "C:\Users\xpb\Anaconda3\envs\Python27\lib\site-packages\keras\engine\topology.py", line 572, in __call__
    self.add_inbound_node(inbound_layers, node_indices, tensor_indices)
  File "C:\Users\xpb\Anaconda3\envs\Python27\lib\site-packages\keras\engine\topology.py", line 635, in add_inbound_node
    Node.create_node(self, inbound_layers, node_indices, tensor_indices)
  File "C:\Users\xpb\Anaconda3\envs\Python27\lib\site-packages\keras\engine\topology.py", line 166, in create_node
    output_tensors = to_list(outbound_layer.call(input_tensors[0], mask=input_masks[0]))
  File "C:\Users\xpb\Anaconda3\envs\Python27\lib\site-packages\keras\layers\normalization.py", line 143, in call
    x_normed = K.in_train_phase(x_normed, x_normed_running)
  File "C:\Users\xpb\Anaconda3\envs\Python27\lib\site-packages\keras\backend\theano_backend.py", line 1168, in in_train_phase
    x = theano.ifelse.ifelse(_LEARNING_PHASE, x, alt)
AttributeError: 'module' object has no attribute 'ifelse'

降級所使用的theano版本筋粗,重新安裝0.9版本的theano

參考資料

[1] https://keras.io/zh/applications/#resnet
[2] 【Keras】常用的預(yù)訓(xùn)練模型權(quán)重下載及使用
[3] keras 預(yù)訓(xùn)練模型的使用方法
[4] # 版本問題---keras和tensorflow的版本對應(yīng)關(guān)系
[5] tensorflow和keras版本對應(yīng)關(guān)系
[6] keras backend 簡單介紹
[7] keras-import keras.backend as K的意義
[8] keras修改backend的方法 解決問題
[9] 解決OSError: Unable to open file (truncated file: eof = 84336640, sblock->base_addr = 0, stored_eof = 解決問題
[10] Keras深度學(xué)習(xí)框架學(xué)習(xí)筆記(3) - AttributeError:’module’ object has no attribute ‘ifelse’錯(cuò)誤信息的解決方法 解決問題
[11] 詳解keras的model.summary()輸出參數(shù)Param計(jì)算過程
[12] keras 中獲取張量 tensor 的維度大小策橘。 解決問題
[13] keras 獲取某層的輸入/輸出 tensor 尺寸
[14] keras獲得model中某一層的某一個(gè)Tensor的輸出維度

Keras的網(wǎng)絡(luò)層相關(guān)操作

[1] AveragePooling1D和GlobalAveragePooling1D的區(qū)別

Keras的Dot類

[1] 代碼系列——keras.layers.Dot()解析
[2] Keras的Dot類
[3] keras.layers層dot維度計(jì)算的一些介紹
[4] # 深度學(xué)習(xí)(六)keras常用函數(shù)學(xué)習(xí)
[5] Docs ? Layers ? 融合層 Merge

論文下載

[1] Attribute-Aware Attention Model for Fine-grained Representation Learning

預(yù)訓(xùn)練模型

[1] https://github.com/fchollet/deep-learning-models/releases/tag/v0.2
[2] https://github.com/fchollet/deep-learning-models/releases/tag/v0.1

代碼

[1] # iamhankai/attribute-aware-attention

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市娜亿,隨后出現(xiàn)的幾起案子丽已,更是在濱河造成了極大的恐慌,老刑警劉巖买决,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沛婴,死亡現(xiàn)場離奇詭異,居然都是意外死亡督赤,警方通過查閱死者的電腦和手機(jī)嘁灯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來躲舌,“玉大人丑婿,你說我怎么就攤上這事∶恍叮” “怎么了羹奉?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長约计。 經(jīng)常有香客問我诀拭,道長,這世上最難降的妖魔是什么煤蚌? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任耕挨,我火速辦了婚禮,結(jié)果婚禮上铺然,老公的妹妹穿的比我還像新娘俗孝。我一直安慰自己,他們只是感情好魄健,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布赋铝。 她就那樣靜靜地躺著,像睡著了一般沽瘦。 火紅的嫁衣襯著肌膚如雪革骨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天析恋,我揣著相機(jī)與錄音良哲,去河邊找鬼。 笑死助隧,一個(gè)胖子當(dāng)著我的面吹牛筑凫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼巍实,長吁一口氣:“原來是場噩夢啊……” “哼滓技!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起棚潦,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤令漂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后丸边,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叠必,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年妹窖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了纬朝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,989評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嘱吗,死狀恐怖玄组,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谒麦,我是刑警寧澤俄讹,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站绕德,受9級特大地震影響患膛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜耻蛇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一踪蹬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧臣咖,春花似錦跃捣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至刁赦,卻和暖如春娶聘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背甚脉。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工丸升, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人牺氨。 一個(gè)月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓狡耻,卻偏偏與公主長得像墩剖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子夷狰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評論 2 345