CNN经典网络学习(我也很无奈因为要改网络结构)

ResNet50:

深度学习——残差神经网络ResNet在分别在Keras和tensorflow框架下的应用案例 ღ( ´・ᴗ・` )比心

https://blog.csdn.net/ghw15221836342/article/details/79801627

使用Keras预训练模型ResNet50进行图像分类

代码的理解参照了这里:https://www.cnblogs.com/hezhiyao/tag/Coursera%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/default.html?page=1(笔记和课程都很棒)

有个参数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:树模型不需要归一化

猜你喜欢

转载自blog.csdn.net/weixin_31866177/article/details/83151853