every blog every motto: Instead of rejecting the fact that it has already become, you might as well accept it. This is called resignation.

0. 前言

本节,自定义损失函数,

1. 代码部分

1. 导入模块

import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import sklearn
import pandas as pd
import os
import sys
import time
import tensorflow as tf
from tensorflow import kerasprint(tf.__version__)
print(sys.version_info)
for module in mpl,np,pd,sklearn,tf,keras:print(module.__name__,module.__version__)

1.1 layer的简单使用

# layer的简单使用
layer = tf.keras.layers.Dense(100)
layer = tf.keras.layers.Dense(100,input_shape=[None,5])
layer(tf.zeros([10,5]))
# layer.variables
layer.trainable_variables

2. 读取数据

from sklearn.datasets import fetch_california_housing# 房价预测
housing = fetch_california_housing()
print(housing.DESCR)
print(housing.data.shape)
print(housing.target.shape)

3. 划分样本

# 划分样本
from sklearn.model_selection import train_test_splitx_train_all,x_test,y_train_all,y_test = train_test_split(housing.data,housing.target,random_state=7)
x_train,x_valid,y_train,y_valid = train_test_split(x_train_all,y_train_all,random_state=11)print(x_train.shape,y_train.shape)
print(x_valid.shape,y_valid.shape)
print(x_test.shape,y_test.shape)

4. 数据归一化

# 归一化
from sklearn.preprocessing import StandardScalerscaler = StandardScaler()
x_train_scaled = scaler.fit_transform(x_train)
x_valid_scaled = scaler.transform(x_valid)
x_test_scaled = scaler.transform(x_test)

5. 自定义层次

# customized dense layer
class CustomizedDenseLayer(keras.layers.Layer):def __init__(self,units,activation=None,**kwargs):self.units = unitsself.activation=keras.layers.Activation(activation)super(CustomizedDenseLayer,self).__init__(**kwargs)def build(self,input_shape):"""构建所需要的参数"""self.kernel = self.add_weight(name="kernel",shape=(input_shape[1],self.units),initializer='uniform',trainable=True)self.bias = self.add_weight(name="bias",shape=(self.units,),initializer='zeros',trainable=True)#         super(CustomizedDenseLayer,self).build(input_shape)super(CustomizedDenseLayer,self).build(input_shape)def call(self,x):"""完成正向计算"""return self.activation(x @ self.kernel + self.bias)

5.2 自定义没有参数的层次

# 没有参数层次的定义
# tf.nn.softplus:log(1+e^x)
customized_softplus = keras.layers.Lambda(lambda x : tf.nn.softplus(x))
# 使用
print(customized_softplus([-10.,-5.,0.,5.,10.]))

6. 搭建模型

# 搭建模型
model = keras.models.Sequential([CustomizedDenseLayer(30,activation='relu',input_shape=x_train.shape[1:]),CustomizedDenseLayer(1),customized_softplus,# 自定义激活函数层,和一下两种情况等价# keras.layers.Dense(1,activation="softplus")# keras.layers.Dense(1),keras.layers.Activation('softplus'),
])# 打印model信息
model.summary()
# 编译
model.compile(loss='mean_squared_error',optimizer="sgd")
# 回调函数
callbacks = [keras.callbacks.EarlyStopping(patience=5,min_delta=1e-3)]

7. 训练

#训练
history = model.fit(x_train_scaled,y_train,validation_data=(x_valid_scaled,y_valid),epochs=100,callbacks=callbacks)

8. 学习曲线

# 学习曲线
def plot_learning_curves(history):pd.DataFrame(history.history).plot(figsize=(8,5))plt.grid(True)plt.gca().set_ylim(0,1)plt.show()
plot_learning_curves(history)

9. 测试集上

model.evaluate(x_test_scaled,y_test,verbose=2)

从零基础入门Tensorflow2.0 ----三、8. 自定义层次相关推荐

  1. 九宫怎么排列和使用_剪映零基础入门教程第三十七篇:一学就会系列之九宫格小程序配音...

    很多玩儿抖音的朋友都看过九宫格视频,但是并不是每个玩抖音的人都会制作这个九宫格视频,实际这个需要借助小工具来帮忙,而常用抖音的朋友们会对剪映更加熟悉一些,且九宫格视频在剪映内的制作方式则比较简单.那么 ...

  2. 视频编码零基础入门(0):零基础,史上最通俗视频编码技术入门

    [来源申明]本文引用了微信公众号"鲜枣课堂"的<视频编码零基础入门>文章内容.为了更好的内容呈现,即时通讯网在引用和收录时内容有改动,转载时请注明原文来源信息,尊重原作 ...

  3. Java好学吗?零基础入门Java,三个就业方向实现月入过万!

    Java好学吗?零基础入门Java容易吗?据统计,这是很多人学习前最常问也是最关心的问题之一. 不可否认,大家在开始接受新事物的时候都会陷入困境,但学习是循序渐进的,零基础入门Java到底难不难,只有 ...

  4. 日语零基础入门至初级“三步走”

    被日本动漫.日剧深深迷住,但看见似熟非熟的汉字假名却无从下手?!没关系,沪江网校推出日语入门系列班级,要想日语零基础入门你只需要"三步走"!首先,我们来了解看看什么是"三 ...

  5. SQL零基础入门学习(三)

    SQL零基础入门学习(二) SQL WHERE 子句 WHERE 子句用于提取那些满足指定条件的记录. SQL WHERE 语法 SELECT column1, column2, ... FROM t ...

  6. Pr零基础入门指南笔记三-------------视频效果与转场

    目录 精剪第一步--视频效果与转场 1.三大面板 2.位置 3.效果库 4.常用视频效果 [干货]PR零基础入门指南第四集:PR常用的效果和转场,视频防抖.宽银幕效果.设置默认效果等_哔哩哔哩_bil ...

  7. 【转】Dynamics CRM 365零基础入门学习(三)Dynamics 通过Web API 来调用自定义的Action(使用插件)

    今天想实现一个Search Product的功能,首先要将数据展示在页面,然后前端根据查询需求进行处理.之前是在salesforce中实现的,可以定义一个Search Product的页面,然后在页面 ...

  8. Arduino Uno零基础入门学习笔记——三针脚声音传感器

    一.电路接线 声音传感器 声音传感器引脚 Arduino引脚 VCC 5V GND GND OUT 6 LED LED引脚 Arduino引脚 正极 8 GND GND 二.代码 int val; i ...

  9. Apache Flink 零基础入门(十七)Flink 自定义Sink

    需求:socket发送过来的数据,把String类型转成对象,然后把Java对象保存到Mysql数据库中. 创建数据库和表 create database imooc_flink; create ta ...

  10. SQL零基础入门学习(四)

    SQL零基础入门学习(三) SQL INSERT INTO 语句 INSERT INTO 语句用于向表中插入新记录. SQL INSERT INTO 语法 INSERT INTO 语句可以有两种编写形 ...

最新文章

  1. Netty 之 Zero-copy 的实现(下)
  2. 初始Java DVD项目
  3. leetcode解题报告:198 House Robber
  4. java中抽象类和接口的作用与区别
  5. VLC通信仿真中数字脉冲间隔调制(DPIM)实例
  6. web展现mysql_web页面实现LED跑马灯效果(涉及web前端、原生JS、PHP、mysql)
  7. 关于Unity中的声音管理模块(专题七)
  8. So Easy! 让开发人员更轻松的工具和资源
  9. vue登录如何存储cookie_vue项目实现表单登录页保存账号和密码到cookie功能
  10. 计算机二级考vb试题,2017计算机二级考试VB练习题及答案
  11. c#写图像tif gdal_Gdal系列 (二)读取图像基本操作b + 简单波段合成
  12. (19)System Verilog模块设计示例
  13. java 对象查找_通过Java中的参数集查找最合适的对象
  14. linux 修改ramdisk内容,在Linux下使用RamDisk
  15. LeetCode刷题(26)
  16. Vue 混合、自定义指令、插件
  17. 向楚留香学习交朋友的办法
  18. 极客时间_算法训练营(代码实现汇总)
  19. 佳能lbp611cn硒鼓_佳能lbp611cn说明书
  20. BZOJ 2037 [Sdoi2008] Sue的小球

热门文章

  1. 每天一道剑指offer-链表中环的入口节点
  2. 全国计算机三级数据库技术选择题,全国计算机三级数据库技术备考练习题
  3. 罗格斯大学计算机科学排名,罗格斯大学计算机工程硕士专业排名读完这篇立即秒懂...
  4. Hadoop下虚拟机的创建与克隆
  5. ROS采坑日记(3)----在ROS下 编译ORB_SLAM2时遇到问题:[rosbuild] rospack found package ORB_SLAM2 at ........
  6. springmvc自定义类型转换
  7. c语言数组题库答案,C语言数组百道练习题含答案.pdf
  8. 3dmax材质通道插件_3dmax插件外挂神器【疯狂模渲大师蓝色经典版】第九章:渲染后期教程...
  9. 一招判断三元催化堵塞_三元催化堵塞,许多老司机不知道如何处理,教你一妙招,油耗低...
  10. sql 查询id 逗号拼接_sql查询列进行STUFF()拼接 单引号 逗号_xml path excel