AI-039: Python深度学习3 - 三个Karas实例-1

深入理解 keras 中 Dense 层参数 目录引言深入理解 Dense 层的用法查看参数输入尺寸输出尺寸示例:用法完整示例示例一: 最小网络示例二:多维度数据示例三:特殊情况,待讨论 引言 大家或许已经对深度学习不陌生了。不管是养家糊口工作还是科研学习早日毕业,为了生活,我们可能不得不去深入理解深度学习方面的知识。对于现成的深度学习框架,已经有很多教程,一般都是再强调用法,却很少有理论与实战结合的示例。 在此,我们将抛砖引玉,记录一些关于 keras 中 Dense 层的简单使用。 深入理解 Dense 层的用法 Dense layer 就是常提 阅读详情

实例:通过imdb的评价数据来分析电影的好坏。

套路:

1. 预处理数据

2. 建立网络模型(层数、每层节点数、激活函数)

3. 选取损失函数、优化器,训练轮次及批量大小

4. 使用训练集训练模型

5. 根据训练结果调整2、3

6. 使用校验集校验模型

7. 根据校验结果调整2、3

8. 使用测试集预测结果

9. 根据测试结果调整2、3

10. 最终获得满意的模型:)

最终的代码很简单,技术红利时代,造就了技术人员的层次天壤之别。

加载数据

from keras.datasets import imdb
# imdb 电影评论数据库,样本是评论中单词对应的索引
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000)

预处理数据,主要是把训练及测试数据从出现单词的编码向量,转化为单词是否出现的0/1向量

比如有条评价是:good movie 对应词典中的索引是93, 103,那么最初的向量是[93,103] 这样的向量会根据评价的内容长度不同,不能满足深度学习网络输入数据的需要。一种转变方式就是,用10000个高频单词是否出现来表示,good movie就可以转变为[0,0,0...1,0,0...,1,0,0...]第93和103是1,其他9998个元素都是0

import numpy as np
def vectorize_sequences(sequences, dimension=10000):
    # Create an all-zero matrix of shape (len(sequences), dimension)
    results = np.zeros((len(sequences), dimension))
    for i, sequence in enumerate(sequences):
        results[i, sequence] = 1.  # set specific indices of results[i] to 1
    return results

x_train = vectorize_sequences(train_data)
x_test = vectorize_sequences(test_data)

y_train = np.asarray(train_labels).astype('float32')
y_test = np.asarray(test_labels).astype('float32')

预处理过的数据就可以送入网络中进行学习了。先构建网络模型:1个输入、1个隐藏、1个输出,输入和隐藏层都是16个元素

隐藏层数和元素个数搜视『凭经验』选择的,根据训练结果==不断优化。激活函数是RELU(Rectified Linear Unit,修正线性单元)是最常用的激活函数。最后输出层采用sigmodid,将输出转化为0-1之间的数值,表示概率值。

from keras import models
from keras import layers

model = models.Sequential()
model.add(layers.Dense(16, activation='relu', input_shape=(10000,)))
model.add(layers.Dense(16, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid')

接下来选择损失函数和优化器,并选择评估标准。这里可以选择karas自带的,也可以自定义优化器和损失函数。

model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy'])

训练及验证模型,这里训练4轮次,批量大小为512个样本

history = model.fit(partial_x_train, 
                    partial_y_train, 
                    epochs=4, 
                    batch_size=512, 
                    validation_data=(x_val, y_val))

单独验证

results = model.evaluate(x_test, y_test)

预测

model.predict(x_test)

 

tensorflow.keras.datasets 中关于imdb.load_data的使用说明 在tensorflow2.x的keras中内置了7种类型的数据集: 数据集名称 数据集描述 boston_housing 波士顿房价数据 cifar10 10种类别图片集 cifar100 100种类别图片集 fashion_mnist 10种时尚类别图片集 imdb 电影评论情感分类数据集 mnist 手写数字图片集 reuters 路透社新闻主题分类数据集 这些数据的读取都可以使用load_data()方法。不过2种关于文本的数据集imdb和reuters比较 阅读详情

相关推荐

Tensorflow.keras.layers各种层的学习笔记

keras中一些layers的学习笔记

roman_1234的博客 2122

AI-040: Python深度学习3 - 三个Karas实例-2

实例2: 通过路透社数据集来将文本区分46个不同主题 这里与上一个实例不同的地方:这是个多元分类问题,因此最终输出是46维向量 加载数据 from keras.datasets import reuters (train_data, train_labels), (test_data, test_labels) = reuters.load_data(num_words=10000) ...

拥抱AI的老粽子 2154

十三 Keras卷积神经网络 cifar10

Karas 从网上下载的数据集都保存在下面的目录里 (train_image, train_label), (test_image, test_label) = cifar.load_data() 从datasets中直接加载数据集 train_image.shape, test_image.shape 神经网络:最好做归一化处理(神经网络喜欢统一的,比较小的数据) train_image...

weixin_42373620的博客 418

『python学习』keras库学习

1、Keras的核心数据结构是“模型”,模型是一种组织网络层的方式。Keras中主要的模型是Sequential模型,Sequential是一系列网络层按顺序构成的栈 from keras.models import Sequential model = Sequential() # coding:utf-8 # 使用神经网络算法预测销量高低 import pandas as pd #

L聪记博客 3331

karas-battle-city:karas的Battle City演示

卡拉斯战役城市 karas进行的战斗城市演示。

Pytorch中CrossEntropyLoss()详解

交叉熵主要是用来判定实际的输出与期望的输出的接近程度。举个例子:在做分类训练的时候,如果一个样本属于第 K 类,那么这个类别所对应的输出节点的输出值应该为1,而其他节点的输出都为0,即 [0,0,1,0,….0,0] ,这个数组也就是样本的 Label,是神经网络最期望的输出结果。我们用交叉熵损失函数来衡量网络的实际输出与正确标签的差异,利用这种差异经过反向传播去更新网络参数。交叉熵:它主要刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近。

flyingluohaipeng的博客 3861

keras线性回归,实例

import keras import numpy as np import matplotlib.pyplot as plt #Sequential 按顺序构成的模型 from keras.models import Sequential#Sequential是模型结构,输入层,隐藏层,输出层 #Dense 全连接层 from keras.layers import Dense #使用num...

iamcfb_的博客 854

手把手教你用8位单片机IO口直接驱动WS2812灯带(附完整代码和避坑指南)

本文详细介绍了如何使用8位单片机IO口直接驱动WS2812灯带,包括硬件准备、时序生成、色彩引擎与特效算法的实现,以及调试技巧与性能优化。通过汇编语言优化和精确时序控制,实现高效的LED驱动和炫酷的彩虹灯效,适合嵌入式开发者和硬件爱好者参考。

weixin_42696271的博客 304

Keras Dense层整理

''' Created on 2018-4-4'''keras.layers.core.Dense( units, #代表该层的输出维度 activation=None, #激活函数.但是默认 liner use_bias=True, #是否使用b kernel_initializer='glorot_uniform', #初始化w权重,keras/initializers.py bias_init

u011311291的博客 4万+

r语言svr模型_R语言初探强化学习中的马尔可夫模型

强化学习大家这几年应该不陌生,从AlphaGo到AlphaZero让大家见识到了强化学习的力量。我们今天给大家介绍一个在强化学习中核心思维马尔可夫决策过程(MDP)。马尔科夫决策过程是基于马尔科夫论的随机动态系统的最优决策过程。它是马尔科夫过程与确定性的动态规划相结合的产物,故又称马尔科夫型随机动态规划,属于运筹学中数学规划的一个分支。今天我们给大家介绍下马尔可夫决策过程中用到一些算法以...

weixin_28994357的博客 1111

[PayPal报错]为遵守国际法规,这笔交易已被拒绝。

PayPal报错解决:为遵守国际法规,这笔交易已被拒绝。

qq_39906413的博客 1万+

python之Keras基本操作总结

       1、通过np.loadtxt加载xls或者CSV中的数据集。不同模型不同数据类型在数据输入上有些许差异,所在往往需要自己重写数据载入。相关数据的提取可以参考:   https://blog.youkuaiyun.com/zx520113/article/details/84556489,TensorFlow   https://blog.youkuaiyun.com/zx520113/article/det...

SingWeek 1万+

STM32F407 FSMC并口读取AD7606

先贴一下最终效果图.这个是AD7606并口读取数据一个周期后的数据结果. 原始波形用示波器看是很平滑的. AD7606不知为何就会出现干扰, 我猜测可能是数字信号干扰导致的. 因为干扰的波形很有规律. 这种现象基本上可以排除是程序问题. 应该是干扰或者数字信号干扰,或者是数字和模拟共地导致的.是一个宏,实际上是指向的一个内存地址, 这个内存地址是FSMC指定的地址. 使用FSMC接口, 可免于控制引脚, 直接读取某个地址即可, FSMC会自动产生操作时序. 具体请见FSMC相关知识.

走错路的程序员 5496

蓝桥杯习题笔记-入门训练

蓝桥杯练习-入门训练Fibonacci数列圆的面积序列求和A+B问题 Fibonacci数列 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。 输入格式 输入包含一个整数n。 输出格式 输出一行,包含一个整数,表示Fn除以10007的余数。 说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数

huhuhuhuhuhu_hu的博客 696

【数据集】中国陆地生态系统通量观测网 ChinaFLUX

【数据集】中国陆地生态系统通量观测网 ChinaFLUX

WW、forever的博客 188

历年安徽省省赛AHOI初中组考点分类汇总考点分类汇总

持续更新中.....

weixin_42358969的博客 818

Keras 常见层的知识点理解

Dense() Keras框架中的Dense(),是Keras中的core中的一个重要的函数 用来对上一层的神经元进行全部连接,实现特征的非线性组合。 该函数所在windows目录的位置为:\Anaconda3\Lib\site-packages\keras\layers\core.py (windows环境下配置Keras是在Anaconda3的环境下进行配置,减少了各种依赖包的频繁安装...

snailme的博客 2万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

python深度学习库keras——各类网络层

全栈工程师开发手册 (作者:栾鹏) python教程全解 一、网络层 keras的层主要包括: 常用层(Core)、卷积层(Convolutional)、池化层(Pooling)、局部连接层、递归层(Recurrent)、嵌入层( Embedding)、高级激活层、规范层、噪声层、包装层,当然也可以编写自己的层。 对于层的操作 layer.get_weights() #返回该层

9417

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【Python三方库】Python之Keras库的简介、安装、使用方法、示例代码、注意事项等详细攻略

Python之Keras库的简介、安装、使用方法、示例代码、注意事项等详细攻略

科技改变人类,技术成就未来 3465

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

keras.datasets.imdb.py 源码分析

keras.datasets.imdb.py 源码分析概述load_data方法源码:get_word_index方法: 概述 IMDB 数据集:包含来自互联网电影数据库(IMDB)的 50 000 条严重两极分化的评论。数据集被分为用于训练的 25 000 条评论与用于测试的 25 000 条评论,训练集和测试集都包含 50% 的正面评论和 50% 的负面评论。 imdb.py 实现了IMDB ...

qq_42189426的博客 1006

keras.datasets.imdb数字转换单词问题小坑

在进行NLP的学习过程中,我发现keras自带的imdb数据挺好用的,打印了下train_dataset发现都是数字,在数字到单词转换的时候遇到了问题,转换出来的根本就不是正常句子。 正确写法应该是 indexWord = dict([(value, key) for (key, value) in wordIndex.items()]) trainWords = ’ '.join([indexW...

梦想闹钟 684

使用Keras处理深度学习中的二分类问题——Imdb影评分类

简介 二分类问题是应用很广泛的机器学习问题,它根据输入,回答yes/no。 IMDB数据集,包含来自互联网电影数据库(IMDB)的50000条严重两极分化的评论。 数据集被分为用于训练的25000条评论和用于测试的25000条评论,训练集和测试集中都包括50%的正面评价和50%的负面评价。 IMDB数据集内置于Keras库中,它已经过预处理,单词序列的评论已经被转换为整数序列,其中每个整数代表字典中的某个单词。 下面开始。 加载数据 直接加载IMDB数据: from keras.datasets imp

guotianqing的博客 3208

Python-深度学习-Keras 简介

Keras 是一个 Python 深度学习框架,可以方便地定义和训练几乎所有类型的深度学习模型。Keras 最开始是为研究人员开发的,其目的在于快速实验。本文简单介绍了 Keras 的原理和用法。

ManWZD的博客 5283

keras里的Dense()函数

keras.layers.Dense()方法及其参数 一、Dense层 keras.layers.Dense(units, activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_r...

Nick的博客 2万+
上一篇: AI-038: Python深度学习2 - 神经网络的数学基础
下一篇: AI-040: Python深度学习3 - 三个Karas实例-2
铭记北宸
博客等级 码龄18年 289粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铭记北宸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值