(听完北大曹健老师的课,特此复习)

一、本节课的知识点

  • 神经网络搭建八股
  • iris代码复现
  • MNIST数据集
  • 训练MNIST数据集
  • Fashion数据集

二、用Tensorflow API:tf.keras搭建网络八股

六步法

  • import相关包
  • 准备训练集train,测试集test
  • 搭建网络结构 model = tf.keras.models.Sequential(顺序搭建的方法)
  • 配置模型参数 model.compile
  • 配置训练参数 model.fit
  • 显示模型结构 model.summary



三、iris代码复现

import tensorflow as tf
from sklearn import datasets
import numpy as npx_train = datasets.load_iris().data
y_train = datasets.load_iris().targetnp.random.seed(116)
np.random.shuffle(x_train)
np.random.seed(116)
np.random.shuffle(y_train)
tf.random.set_seed(116)model = tf.keras.models.Sequential([tf.keras.layers.Dense(3, activation='softmax', kernel_regularizer=tf.keras.regularizers.l2())
])model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1),loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),metrics=['sparse_categorical_accuracy'])
'''
优化器:这里使用的是一般的梯度下降法;
损失函数:由于我们输出的是概率分布(该特征属于三种鸢尾花的概率值,故from_logits设为Flase)
网络的评估函数:由于预测值y是概率分布,标签y_是数值,故使用sparse_categorical_accuracy
'''
model.fit(x_train, y_train, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)
#validation_split=0.2的意思是取数据集的20%作为测试集,剩下的作为训练集
#validation_freq=20的意思是每20次epoch测试一次
model.summary()

六步法

  • import相关包
  • 准备训练集train,测试集test
  • class MyModel(Model) model=MyModel搭建网络机构(模式化子类的方法)
  • model.compile
  • model.fit
  • model.summary
import tensorflow as tf
from tensorflow.keras.layers import Dense
from tensorflow.keras import Model
from sklearn import datasets
import numpy as npx_train = datasets.load_iris().data
y_train = datasets.load_iris().targetnp.random.seed(116)
np.random.shuffle(x_train)
np.random.seed(116)
np.random.shuffle(y_train)
tf.random.set_seed(116)class IrisModel(Model):def __init__(self):super(IrisModel, self).__init__()self.d1 = Dense(3, activation='softmax', kernel_regularizer=tf.keras.regularizers.l2())def call(self, x):y = self.d1(x)return ymodel = IrisModel() #实例化模型model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1),loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),metrics=['sparse_categorical_accuracy'])model.fit(x_train, y_train, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)
model.summary()

四、MNIST数据集

简介:

输出:

使用Sequential完成对MNIST手写数字的识别

import tensorflow as tfmnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
#归一化,将输入特征中每个点的像素值归一化到0~1,更适合神经网络吸收(我这里理解的是更方便计算)
model = tf.keras.models.Sequential([tf.keras.layers.Flatten(),tf.keras.layers.Dense(128, activation='relu'),tf.keras.layers.Dense(10, activation='softmax')
])model.compile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),metrics=['sparse_categorical_accuracy'])model.fit(x_train, y_train, batch_size=32, epochs=5, validation_data=(x_test, y_test), validation_freq=1)
model.summary()

用子类化的方法:

import tensorflow as tf
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras import Modelmnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0class MnistModel(Model):def __init__(self):super(MnistModel, self).__init__()self.flatten = Flatten()self.d1 = Dense(128, activation='relu')self.d2 = Dense(10, activation='softmax')def call(self, x):x = self.flatten(x)x = self.d1(x)y = self.d2(x)return ymodel = MnistModel()model.compile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),metrics=['sparse_categorical_accuracy'])model.fit(x_train, y_train, batch_size=32, epochs=5, validation_data=(x_test, y_test), validation_freq=1)
model.summary()

五、fashion数据集

简介:

用Sequential的方法顺序搭建模型实现对fashion数据集的识别

import tensorflow as tffashion = tf.keras.datasets.fashion_mnist
(x_train, y_train),(x_test, y_test) = fashion.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0model = tf.keras.models.Sequential([tf.keras.layers.Flatten(),tf.keras.layers.Dense(128, activation='relu'),tf.keras.layers.Dense(10, activation='softmax')
])model.compile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),metrics=['sparse_categorical_accuracy'])model.fit(x_train, y_train, batch_size=32, epochs=5, validation_data=(x_test, y_test), validation_freq=1)
model.summary()

用子类的方法实现:

import tensorflow as tf
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras import Modelfashion = tf.keras.datasets.fashion_mnist
(x_train, y_train),(x_test, y_test) = fashion.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0class MnistModel(Model):def __init__(self):super(MnistModel, self).__init__()self.flatten = Flatten()self.d1 = Dense(128, activation='relu')self.d2 = Dense(10, activation='softmax')def call(self, x):x = self.flatten(x)x = self.d1(x)y = self.d2(x)return ymodel = MnistModel()model.compile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),metrics=['sparse_categorical_accuracy'])model.fit(x_train, y_train, batch_size=32, epochs=5, validation_data=(x_test, y_test), validation_freq=1)
model.summary()

tensorflow学习笔记(五)相关推荐

  1. 【拔刀吧 TensorFlow】TensorFlow学习笔记五

    现在我们终于步入正轨,了解了那么多铺垫知识后,来和神经网络来次亲密接触: 作为工科机械狗,务实一些,咱们上来就从代码搞起: (官方形容了很多关于TensorFlow的优点,和我这种超级小白没啥关系,知 ...

  2. tensorflow学习笔记五:mnist实例--卷积神经网络(CNN)

    mnist的卷积神经网络例子和上一篇博文中的神经网络例子大部分是相同的.但是CNN层数要多一些,网络模型需要自己来构建. 程序比较复杂,我就分成几个部分来叙述. 首先,下载并加载数据: import ...

  3. python tensorflow学习笔记(五)矩阵乘法运算

    相关公式 [0.36424586843872840.6675075448915823]×[0.134750808390697090.5863696301031353]=[0.44048858] \be ...

  4. [TensorFlow 学习笔记-04]卷积函数之tf.nn.conv2d

    [版权说明] TensorFlow 学习笔记参考: 李嘉璇 著 TensorFlow技术解析与实战 黄文坚 唐源 著 TensorFlow实战郑泽宇  顾思宇 著 TensorFlow实战Google ...

  5. tensorflow学习笔记(七):CNN手写体(MNIST)识别

    文章目录 一.CNN简介 二.主要函数 三.CNN的手写体识别 1.MNIST数据集简介 2.网络描述 3.项目实战 一.CNN简介 一般的卷积神经网络由以下几个层组成:卷积层,池化层,非线性激活函数 ...

  6. Tensorflow学习笔记6:解决tensorflow训练过程中GPU未调用问题

    Tensorflow学习笔记6:解决tensorflow训练过程中GPU未调用问题 参考文章: (1)Tensorflow学习笔记6:解决tensorflow训练过程中GPU未调用问题 (2)http ...

  7. python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用

    本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...

  8. tensorflow学习笔记(三十二):conv2d_transpose (解卷积)

    tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...

  9. tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数

    tensorflow学习笔记二--建立一个简单的神经网络 2016-09-23 16:04 2973人阅读 评论(2) 收藏 举报  分类: tensorflow(4)  目录(?)[+] 本笔记目的 ...

  10. tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)

    续集请点击我:tensorflow学习笔记--使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...

最新文章

  1. js格式化json格式的日期
  2. 博客园写的第一篇文章
  3. margin的塌陷现象
  4. android service alertdialog,Android service里面启动alertdialog
  5. 十三、深入Python字典和集合
  6. javascript数组的属性、方法和清空-最全!!!(必看)
  7. 【Unity3D技巧】一个简单的Unity-UI框架的实现
  8. 离散元 python_离散元在土木工程领域的应用前景如何?
  9. 二分答案——砍树(洛谷 P1873)
  10. linux重要目录之usr和var
  11. 魔兽世界服务器维护后稀有会马上刷新么,魔兽世界:“七大稀有物品”最后一个,让无数LR玩家,蹲点等刷新...
  12. Python3-word文档操作(七):提取word文档中的图片方式一-利用word文档的压缩文件属性
  13. FilterSecurityInterceptor详解
  14. 泰勒公式的展开细节解析
  15. MAC电脑外设键盘如何更改command为control键MAC电脑外设键盘如何更改command为control键...
  16. 微型计算机中既能作为输出设备,在微机的硬件设备中,有一种设备在程序设计中既可以当做输出设备,又可以当做输入设备,这种设备是ß...
  17. 在线CRM客户管理系统有好用的吗?这5款千万别错过!
  18. springboot源码解析,kafkaredis面试题
  19. 爱奇艺财报解读:连续两个季度盈利 会员同比增收7%
  20. kube-scheduler源码分析(五)之 PrioritizeNodes

热门文章

  1. MAC安装Eclipse及对其进入相关配置
  2. 机器学习(7): 朴素贝叶斯算法 小结及实验
  3. js、jq遍历数组和对象
  4. c语言考研知识,c语言考研应如何准备
  5. java: 程序包org.apache.hadoop.hive.metastore不存在
  6. 《惢客创业日记》2020.07.21(周二)悬疑爱好者的基地
  7. 云模型云滴生成 - python
  8. 使用pc控制GOPRO6拍照
  9. 使用putty从windows向远程服务器传递文件
  10. SVD应用--电影推荐系统+图像压缩