TensorFlow
文章平均质量分 59
梦否
【@】bug修复,程序代做
展开
-
自编码器在fashion_mnist数据集上的小测验
1. 数据集获取在py文件中,使用(x_train, y_train), (x_test, y_test) = tf.keras.datasets.fashion_mnist.load_data()可以进行数据集的自动下载与自动读取。但是下载过程比较慢,且容易中断。故而就直接从控制台中打印的下载地址中直接下载,下面简单整理了其下载地址:名称描述地址train-images-idx3-ubyte.gz训练集图像heretrain-labels-idx1-ubyte.gz训原创 2021-03-04 12:42:29 · 366 阅读 · 0 评论 -
tf.keras快速入门——自定义指标
1.前言本文讲讨论tensorflow2.0中的自定义指标问题。官网地址:here2. 背景可以通过将 tf.keras.metrics.Metric 类子类化来轻松创建自定义指标。您将需要实现 4 个方法:__init__(self),您将在其中为指标创建状态变量。update_state(self, y_true, y_pred, sample_weight=None),使用目标 y_true 和模型预测 y_pred 更新状态变量。result(self),使用状态变量来计算最终结果。原创 2021-02-05 00:11:37 · 765 阅读 · 0 评论 -
tf.keras快速入门——自定义损失函数(二)
在上篇tf.keras快速入门——自定义损失函数(一)中提到了函数式和继承tf.keras.losses.Loss以实例化子类式的两种损失函数的自定义方式。但是,在文末我们也提到了,这两种方式其实还有存在很大的局限性,故而在本文中将讨论另一种更加灵活的自定义损失函数的方式。在复杂度&学习率&损失函数一文中,实现了这个过程,这里还是粘贴一个简单的例子:定义损失函数为一个分段函数。当预测值大于真实值,我们认为对我们模型不利,即:f(y^,y)={3(y^−y)  原创 2021-02-04 15:46:11 · 537 阅读 · 1 评论 -
tf.keras快速入门——自定义损失函数(一)
官网的自定义损失函数:here在官网中,我们可以看见给出了两种方法来使用Keras提供自定义损失。1. 简单的均方误差def custom_mean_squared_error(y_true, y_pred): return tf.math.reduce_mean(tf.square(y_true - y_pred)) model.compile(optimizer=keras.optimizers.Adam(), loss=custom_mean_squared_error)这原创 2021-02-03 21:30:42 · 2656 阅读 · 1 评论 -
tf.keras快速入门——函数式API(三)
1. 前言本篇将简单讲述自定义层2. 背景在上篇中,简单实现了自定义Model,实现鸢尾花的分类任务。但是其实还是没有多大的改变,这里我们将其序列->Input->自定义Model核心部简单罗列:2.1. Sequentialmodel = tf.keras.Sequential()model.add(tf.keras.layers.Dense(4, input_shape=(4,), activation='relu'))model.add(tf.keras.layers.Den原创 2021-02-03 15:32:45 · 405 阅读 · 0 评论 -
tf.keras快速入门——函数式API(二)
在上篇的tf.keras快速入门——函数式API中简单的使用了和序列模型不同的样子来定义网络。但是,该网络只是层与层之间的连接更加灵活,但却没有其余的优点了。当我们需要完全自定义网络模型和前向传递过程,就满足不了了。这里,我们讨论自定义模型。自定义Model类,需要最少复写两个方法,分别是:__init__()call()在__init__()我们初始化所需要的神经网络层,在call()中定义这些神经网络层如何连接,可以理解为前向传播。然后需要返回一个outputs,也就是输出。在本篇中,还原创 2021-02-03 12:49:43 · 240 阅读 · 0 评论 -
tf.keras快速入门——函数式API
在上篇中简单的使用了序列模型,由于序列模型只能表示为神经网络层的简单堆叠,而无法表示成任意模型。故而这里将使用函数式API来构建更加复杂的模型。在鸢尾花分类一文中简单使用了序列模型来解决这个问题,这里将使用函数式API来解决这个问题,体验使用函数式API的便捷性。先看看官方案例:import tensorflow as tfinputs = tf.keras.Input(shape=(3,))x = tf.keras.layers.Dense(4, activation=tf.nn.relu)(原创 2021-02-02 21:07:27 · 394 阅读 · 0 评论 -
tf.keras快速入门——序列模型
最简单的模型是tf.keras.Sequential模型,可以理解为神经网络层的简单堆叠,可以完成一些简单的分类任务,但是却无法表示任意模型。通常将使用函数式API来构建更加复杂的模型。本文在这里只简单总结序列模型的使用。1. 导入相关依赖import tensorflow as tf2. 定义序列模型model = tf.keras.Sequential()3. 添加神经网络层model.add(tf.keras.layers.Dense(units=32, input_shape=(16原创 2021-02-02 12:56:11 · 642 阅读 · 0 评论 -
【spark】属性图自编码器
对于一个网络,如果我们用自编码器来学习整个网络的一个低维嵌入向量表示,分下面两种情况:结构网络 结构网络比较简单,也就是定义类似于邻接矩阵的表示,来表示整个图数据,然后使用自编码器来训练参数,使得再建造的邻接矩阵和原图保持最大程度上的相似即可。属性网络 由于结构性质比较单一,可以用邻接矩阵来进行衡量,再一定程度上使用邻接矩阵这个简单的表示就可以说明这个图的一些性质。但是,对于属性网络,由于现实中的对象所具有的属性往往是多样的,所以再面临属性网络的矩阵表示的时候,往往确实不那么容易。原创 2020-12-27 16:40:14 · 236 阅读 · 0 评论 -
过拟合解决方案——正则化简单实验(二)
照例,还是有序列模型来处理下这个问题:import pandas as pdimport tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt%matplotlib inline# 数据获取datas = pd.read_csv("dot.csv")x = datas.iloc[:, 0:-1] # 得到特征x1, x2y = datas.iloc[:, -1] # 得到标签 y# 定义序列模型mo原创 2020-12-18 20:15:45 · 259 阅读 · 1 评论 -
鸢尾花分类(二)
视频地址:hereimport tensorflow as tffrom sklearn import datasetsfrom matplotlib import pyplot as pltimport numpy as np# 数据获取x_data=datasets.load_iris().datay_data=datasets.load_iris().target# 使用相同的seed,保证输入特征和标签一一对应np.random.seed(116) np.random.sh原创 2020-12-16 10:16:22 · 222 阅读 · 1 评论 -
复杂度&学习率&损失函数
内容来源于视频,视频地址:here1、here2神经网络的复杂度用:网络层数和神经网络参数的个数来表示;空间复杂度:层数(仅计算具有计算能力的层) = 隐藏层的层数 + 1个输出层;总参数 = 总w + 总b;时间复杂度:乘加运算次数eg.总参数 = 3x4+4x1 + 4x2+2x1 = 26乘加运算次数 = 3x4 + 4x2 = 20指数衰减学习率可先用较大的学习率,快速得到较优解,然后逐步减小学习率,使模型在训练后期稳定。指数衰减学习率=初始学习率∗学习率衰原创 2021-01-25 16:28:06 · 883 阅读 · 0 评论 -
TensorFlow2.0常用函数
内容来源视频,视频地址:here2019年3月 tensorflow 2.0 测试版发布2019年10月 tensorflow 2.0 正式发布2020年1月 tensorflow2.1 发布创建一个张量,tf.constant(张量内容, dtype=数据类型[可选])将numpy数据装换成tensor数据类型,tf.convert_to_tensor(数据名, dtype=数据类型[可选])创建全为0的张量,tf.zeros(维度);创建全为1的张量,tf.o原创 2021-01-25 14:15:53 · 425 阅读 · 1 评论 -
过拟合解决方案——正则化简单实验
再缓解过拟合的解决方法中,有:数据清洗增大训练集采用正则化增大正则化参数这里出现了正则化,那么它用来干什么?在损失函数中引入复杂度指标,利用给W加权值,弱化了训练数据的噪声(一般不正则化b),如:loss=loss(ypredict−yactual)+Regularizer∗loss(w)loss = loss(y_{predict} - y_{actual}) + Regularizer * loss(w)loss=loss(ypredict−yactual)+Regulariz原创 2020-12-18 18:27:53 · 460 阅读 · 3 评论 -
二元回归
其实也就是复习下前面的内容。前面用到了两种tensorflow的训练方法,这里也还是来简单总结下:1. 自定义方式1.1 定义神经网络中所有的可训练参数如,在上一篇文章中所定义的参数w和b。# 定义训练参数w = tf.Variable(tf.random.truncated_normal([2,1],stddev=0.1, dtype=tf.double))b = tf.Variable(tf.random.truncated_normal([1],stddev=0.1, dtype=tf.d原创 2020-12-17 14:47:16 · 1152 阅读 · 0 评论 -
鸢尾花分类
接触了前面的序列模型,相信只要得到了数据集,然后利用tensorflow的序列模型来建立神经网络就可以很容易解决这个问题,那么,先来获取到数据集。数据集从sklearn中直接使用,即:from sklearn.datasets import load_irisx_data = load_iris().data # 特征,【花萼长度,花萼宽度,花瓣长度,花瓣宽度】y_data = load_iris().target # 分类不妨简单看下特征数据和分类数据的形状:训练import ten原创 2020-12-16 08:57:28 · 448 阅读 · 0 评论 -
多分类问题
上一篇用到了逻辑回归,也就是二分类问题得到了解决。那么这里使用softmax来处理多分类问题。它是对数几率回归在N个可能不同值上的推广,通常损失函数还是交叉熵损失函数,在tf.keras中常用categorical_crossentropy和sparse_categorical_crossentropy。数据集使用MNIST DATABASE,地址:here那么相对应的读取方法为:import osimport structimport numpy as npdef load_mnist原创 2020-12-15 16:33:00 · 241 阅读 · 0 评论 -
逻辑回归问题
预备知识pandas中的iloc方法在对csv文件进行读取的时候,使用iloc方法比较方便,如:对这么一个数据进行读取:0,30.83,0,0,0,9,0,1.25,0,0,1,1,0,202,0,-11,58.67,4.46,0,0,8,1,3.04,0,0,6,1,0,43,560,-11,24.5,0.5,0,0,8,1,1.5,0,1,0,1,0,280,824,-10,27.83,1.54,0,0,9,0,3.75,0,0,5,0,0,100,3,-10,20.17,5.625,原创 2020-12-15 15:03:13 · 405 阅读 · 2 评论 -
线性回归拟合直线(二)
因为是学习tensorflow,那么我们就需要使用训练的方式来做这个问题,也就是用tensorflow来进行训练得到最终的拟合效果,如下图:绿色的是tensorflow得到的,红色的是自己定义计算训练得到的。比较简单,代码如下:import tensorflow as tf# 使用tensorflow来做def fit_by_tensorflow(datas): model = tf.keras.Sequential() model.add(layer=tf.keras.laye原创 2020-12-14 15:23:08 · 600 阅读 · 0 评论 -
线性回归拟合直线
简单的讲,有一堆数据,需要简单的拟合出一条直线,如:我们知道其表达式是:y=wx+by=wx+by=wx+b那么,我们根据损失函数的思路,可以很容易得出其损失函数:Loss=12m∑i=0N(y^−y)2=12m∑i=0N(wx+b−y)2\begin{aligned}Loss & = \frac{1}{2m}\sum_{i=0}^{N}(\widehat{y} - y)^2 \\&= \frac{1}{2m}\sum_{i=0}^{N}(wx+b - y)^2原创 2020-12-10 10:28:18 · 3558 阅读 · 0 评论 -
tensorflow1.*迁移到2
tf1.*版本支持一键转化为2.0版本迁移方法tf_upgrade_v2 --infile v1.*.py --outfile v2.0.pyv1.*.py为旧版本python文件。转载 2020-11-26 16:06:52 · 239 阅读 · 0 评论 -
tensorflow安装python3.7
之前用conda install tensorflow来进行安装是成功的,但昨天装scrapy的时候装不了,就重新安装的anaconda,在使用conda install tensorflow来安装cpu版本就不得行。然后整了好久,发现还是不得行。然后,官网直接下载whl文件,地址:here然后pip install tensorflow-2.0.0-cp37-cp37m-win_amd64.whl就行了。...原创 2021-01-13 09:05:27 · 465 阅读 · 0 评论 -
K-近邻算法(二)
手写数字识别照例,数据集来源于这篇博客,here,这里粘贴下下载地址:数据集和实现代码下载。首先对数据集进行读取,即:import numpy as npimport osdef getDataset(train_filepath = "trainingDigits", test_filepath = "testDigits"): # 读取数据文件 train_files = os.listdir(train_filepath) test_files = os.listd原创 2020-12-31 09:46:59 · 184 阅读 · 0 评论 -
标准自编码器实例——最简单的自编码器体验
自动编码机的学习包括在隐藏层上对输入信号进行压缩表示,然后在输出层尽可能地复现原始输入。 原始的自编码器可以理解为数据简单降维,而这个降维的处理过程比较特殊就是使用神经网络的方式来进行训练网络权重参数和偏置,然后在再建造从获得的压缩表示中推断原数据的差值来作为它训练的一个误差。简单的结构如:注:此图来源,here.每一层都是一个神经网络中的全连接,也就是Dense层。而,在解码器通过学习重新推断这个原始的图片的output,这两个部分之间的差值,常常作为我们训练的优化目标,即下面这种形式:原创 2020-12-22 22:05:57 · 1253 阅读 · 0 评论 -
多分类问题——自制训练数据集训练
如下图所示:手写的字体的大小均用PS来处理,大小为:那么就可以开始训练了。1. 数据集的读取import osimport numpy as npimport pandas as pdfrom PIL import Imagestring_label_number = ['我','是','王','志']def getIndex(label): for index, el in enumerate(string_label_number): if el == l原创 2020-12-20 15:17:10 · 1618 阅读 · 2 评论 -
tensorflow非顺序网络结构搭建
前面我们知道使用tf.keras.models.Sequential()可以快速搭建一个顺序的网络结构,但是却没办法搭建一个非顺序的网络结构,这里就需要使用类class来搭建神经网络结构。定义的类要继承自Model;在__init__方法中定义网络结构块;定义call方法,即调用网络结构的方法,在这里实现前向传播;如:class IrisModel(Model): def __init__(self): super(IrisModel, self).__init__()原创 2020-12-19 17:25:31 · 416 阅读 · 1 评论 -
model.compile
model.compile(optimizer='rmsprop', loss=None, metrics=None)1. optimizer指定优化器,分别有前面一章中的5种,分别是:sgd、sgdm 、adagrad、rmsprop、adam等优化器另一种写法为:tf.keras.optimizers.SGD(learning_rate=0.1)2. loss指定损失函数,如mse、categorical_corssentropy、sparse_categorical_corssent原创 2020-12-19 17:17:52 · 2228 阅读 · 1 评论 -
5中常见的优化器
视频地址:here在神经网络中的优化过程,常常都是这样一种格式:待优化参数www,损失函数losslossloss,学习率lrlrlr,每次迭代一个batchbatchbatch,ttt表示当前batchbatchbatch迭代的总次数,形式化的计算过程如下:计算t时刻损失函数关于当前参数的梯度gt=∇loss=∂loss∂wtg_t=\nabla {loss}=\frac{\partial {loss}}{\partial{w_t}}gt=∇loss=∂wt∂loss;计算ttt时刻的一阶原创 2020-12-19 16:49:58 · 1331 阅读 · 4 评论 -
TensorFlow实践-学习笔记(2)
环境配置使用anaconda,在配置的时时候,需要修改镜像源:注:以上图片来自慕课公开课。原创 2020-04-25 15:15:27 · 180 阅读 · 0 评论 -
TensorFlow实践-学习笔记(1)
人工智能 未来已来!从2016年的AlphaGo的现世,以及2017年更加厉害的AlphaGoZero的诞生,人工智能开启了新的纪元。人工智能中包含机器学习,机器学习中包含深度学习。机器学习可以大致分为三类,分别是有监督、无监督学习和强化学习。而对于有监督学习,又可以分为两类,分别是分类问题和回归问题。回归问题,针对连续数据,常见的回归算法有:线性回归、AdBoost、神经...原创 2020-04-25 14:48:22 · 282 阅读 · 0 评论