CNN經典網路學習(我也很無奈因為要改網路結構)
阿新 • • 發佈:2018-11-01
ResNet50:
深度學習——殘差神經網路ResNet在分別在Keras和tensorflow框架下的應用案例 ღ( ´・ᴗ・` )比心
https://blog.csdn.net/ghw15221836342/article/details/79801627
有個引數include_top不太明白,猜測。。。
# 這個include_top是什麼?
# 引數include_top表示是否包含模型底部的全連線層,
# 如果包含,則可以將影象分為ImageNet中的1000類,如果不包含,則可以利用這些引數來做一些定製的事情。
import numpy as np from keras.layers import Dense from keras.models import Model from keras.preprocessing import image from keras.applications.resnet50 import ResNet50 # 使用ResNet的結構,不包括最後一層 base_model = ResNet50(include_top = False, pooling = 'avg') # 定義網路結構最後一層 predictions = Dense(3, activation='softmax')(base_model.output) # 定義模型 model = Model(inputs=base_model.input, outputs=predictions) # 載入訓練好的模型 model.load_weights('./weights.h5') image_path = './lena.jpg' # 載入影象 img = image.load_img(image_path, target_size=(224, 224)) # 影象預處理 x = image.img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x) # 對影象進行分類 preds = model.predict(x) # 輸出預測概率 print('Predicted:', preds)
VGG16:
基礎知識:
反捲積(Deconvolution)、上取樣(UNSampling)與上池化(UnPooling)
tensorflow conv2d的padding解釋以及引數解釋
【實驗問題1】如何實現反捲積?由於我自己的實驗pooling太多,導致特徵圖太小,嚴重影響結果。最後找到了反捲積這種解決辦法。程式碼實現如下,ps.如果我後面成功了,會貼出自己的程式碼⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄
https://blog.csdn.net/huangshaoyin/article/details/81004301
# 整體思路:
# 將反捲積分為兩個操作,一個是UpSampling2D(),用上取樣將原始圖片擴大,
# 然後用Conv2D()這個函式進行卷積操作,就可以完成簡單的反捲積。
# UpSampling2D(size=(2,2))就可以將圖片擴大1倍,比如原來為28*28的圖片,就會變為56*56。
keras.layers.convolutional.UpSampling2D(size=(2, 2), data_format=None)
# 進行卷積操作
keras.layers.convolutional.Conv2D(filters, kernel_size, strides=(1, 1), padding='valid', data_format=None, dilation_rate=(1, 1), activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)
另外一種:
Conv2DTranspose: 進行轉置的卷積操作(反捲積) https://keras.io/zh/layers/convolutional/
【實驗問題2】我想看我圖片經過每一次卷積之後輸出的特徵圖大小,用x.shape結果給我顯示(?,?,?,512)。只有深度,特徵圖的長寬呢??如何顯示前三個維度,第一個維度batchsize是1,我想知道2,3維度。
沒有圖片喂進去的時候都是placeholder,所以沒有顯示出具體的值。(test.py的時候有喂進去啊,也沒有顯示出值)
彙總:
今天意外收穫(但還不清楚原理):
Q:問一下,用gbdt做迴歸模型對目標值還需要歸一化嗎?
A:樹模型不需要歸一化