keras卷积神经网络举例

# 特征图深度在增加(从32到128,但尺寸在变小)
from keras import layers
from keras import model

# 输入尺寸为150*150*3,展平后是7*7*128
model = model.Sequential()
# 二维卷积核(提取的图块大小)一般3*3=9个特征向量,或5*5
# 卷积所计算的过滤器数,即第一层深度,32
model.add(layers.Conv2D(32,(3,3),activation='relu',input_shape=(150,150,3)))
# 148*148*32
model.add(layers.MaxPooling2D((2,2)))
# 74*74*32
model.add(layers.Conv2D(64,(3,3),activation='relu'))
# 72*72*64
# 特征图深度增加(从32到64),特征图尺寸变小(从74到72)
model.add(layers.MaxPooling2D((2,2)))
# 36*36*64
model.add(layers.Conv2D(128,(3,3),activation='relu'))
# 34*34*128
model.add(layers.MaxPooling2D((2,2)))
# 17*17*128
model.add(layers.Conv2D(128,(3,3),activation='relu'))
# 15*15*128
model.add(layers.MaxPooling2D((2,2)))
# 7*7*128
## 卷积后记得展平,因为图像是4维数据(样本数、长、宽、颜色通道)
## RNN之后不需要展平,因为RNN的输入是3维(样本数、时间步、特征)
model.add(layers.Fltten())
# 6272
# 降低过拟合
# model.add(layers.Dropout(0.5))
model.add(layers.Dense(512,activation='relu'))
# 512
model.add(layers.Dense(1,activation='sigmoid'))
# 1

## 填充
# 通过padding设置填充,valid表示不使用填充,same表示填充后输出的宽度、高度与输入相同)
model.add(layers.Conv2D(64, (3, 3), activation='relu',padding='same')) # 默认valid

# 显示图片
img_path = 'cat.jpg'

from keras.preprocessing import image # 将图像预处理为4维张量
import numpy as np

img = image.load_img(img_path, target_size=(150,150))
img_tensor = image.img_to_array(img)
img_tensor = np.expand_dims(img_tensor, axis=0)
img_tensor /= 255. # 对图像的预处理都需用这种方法归一化

'''
test_images = test_images.reshape((10000, 28*28))
test_images = test_images.astype('float32')/255
'''

print(img_tensor.shape)

import matplotlib.pyplot as plt
plt.imshow(img_tensor[0])
plt.show()

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值