吴恩达 深度学习 编程作业(4-2)- Keras tutorial - the Happy House & Residual Networks

1. HAPPYMODEL

import numpy as np
from keras import layers
from keras.layers import Input, Dense, Activation, ZeroPadding2D, BatchNormalization, Flatten, Conv2D
from keras.layers import AveragePooling2D, MaxPooling2D, Dropout, GlobalMaxPooling2D, GlobalAveragePooling2D
from keras.models import Model
from keras.preprocessing import image
from keras.utils import layer_utils
from keras.utils.data_utils import get_file
from keras.applications.imagenet_utils import preprocess_input
import pydot
from IPython.display import SVG
from keras.utils.vis_utils import model_to_dot
from keras.utils import plot_model
from kt_utils import *
import keras.backend as K
K.set_image_data_format('channels_last')
import matplotlib.pyplot as plt
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
from matplotlib.pyplot import imshow
X_train_orig, Y_train_orig, X_test_orig, Y_test_orig, classes = load_dataset()

# 标准化图像矢量
X_train = X_train_orig/255.
X_test = X_test_orig/255.

# Reshape
Y_train = Y_train_orig.T
Y_test = Y_test_orig.T

def HappyModel(input_shape):

	#输入图像
    X_input = Input(input_shape)
    
    #用0填充输入图像
    X = ZeroPadding2D((3, 3))(X_input)
    
    #卷积 》批量标准化 》 激活函数
    X = Conv2D(32,(3,3),strides=(1,1),name="conv0")(X)
    X = BatchNormalization(axis=3, name='bn0')(X)
    X = Activation('relu')(X)
	
	#池化
    X = MaxPooling2D((2,2),name='max_pool')(X)
    
    #把多维的输入一维化,用在从卷积层到全连接层的过渡
    X = Flatten()(X)
   
    #一维全连接层
    X = Dense(1,activation='sigmoid',name='fc')(X)
   
    #创建您的Keras模型实例,您将使用此实例来训练/测试模型。
    model = Model(inputs=X_input, outputs=X, name='happy')
    
    return model

happy = HappyModel(X_train.shape[1:])

#compile接收三个参数
#优化器optimizer:该参数可指定为已预定义的优化器名,如rmsprop、adagrad,或一个Optimizer类的对象,详情见optimizers
#损失函数loss:该参数为模型试图最小化的目标函数,它可为预定义的损失函数名,如categorical_crossentropy、mse,也可以为一个损失函数。详情见losses
#指标列表metrics:对分类问题,我们一般将该列表设置为metrics=['accuracy']。指标可以是一个预定义指标的名字,也可以是一个用户定制的函数.指标函数应该返回单个张量,或一个完成metric_name - > metric_value映射的字典.请参考性能评估
 
happy.compile(optimizer='adam',loss= 'binary_crossentropy',metrics=['accuracy'])

#训练模型。 选择迭代次数和批量大小。
happy.fit(x=X_train,y=Y_train,epochs= 10 ,batch_size= 32)

#测试评估模型
preds = happy.evaluate(X_test,Y_test)
print(preds)
print('loss=' + str(preds[0]))
print('Test accuracy=' + str(preds[1]))

#使用其输入/输出的大小在表中打印图层的详细信息
happy.summary()


#绘制图形。 可以使用SVG()将其保存为“.png”
plot_model(happy, to_file='HappyModel.png')

编写模块:
CONV->BATCHNORM->RELU 后面再接POOL
测试模块:
Fit/Train->Evaluate/Test

  • 拟合两次会接着上次的结果继续拟合而不是重新开始
  • 模型如果很难运行减少batch_size
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值