10 个TensorFlow 2.x 使用技巧

TensorFlow2.x(二) ---- 常用函数讲解(创建张量)_ 适合入门学习的最全最细讲解 最常用的创建张量的函数,如tf.constant()、tf.conver_to_tensor()等的讲解还有一些特殊张量的计算,例如创建正态分布张量、均匀分布张量、以及全零全一张量,还陆续总结了很多常遇的问题;因此非常适合新手小白入门学习。也欢迎大家留下自己的讨论 阅读详情

作者 | Rohan Jagtap 

编译 | ronghuaiyang

转自 | AI公园

TensorFlow 2.x在构建模型和TensorFlow的整体使用方面提供了很多简单性。在本文中,我们将探索TF 2.0的10个特性,这些特性使得使用TensorFlow更加顺畅,减少了代码行数并提高了效率。

TensorFlow 2.x在构建模型和TensorFlow的整体使用方面提供了很多简单性。那么TF2有什么新变化呢?

  • 使用Keras轻松构建模型,立即执行。

  • 可在任何平台上进行强大的模型部署。

  • 强大的研究实验。

  • 通过清理过时的API和减少重复来简化API。

在本文中,我们将探索TF 2.0的10个特性,这些特性使得使用TensorFlow更加顺畅,减少了代码行数并提高了效率。

1(a). tf.data 构建输入管道

tf.data提供了数据管道和相关操作的功能。我们可以建立管道,映射预处理函数,洗牌或批处理数据集等等。

从tensors构建管道

>>> dataset = tf.data.Dataset.from_tensor_slices([8, 3, 0, 8, 2, 1])
>>> iter(dataset).next().numpy()
8

构建Batch并打乱

# Shuffle
>>> dataset = tf.data.Dataset.from_tensor_slices([8, 3, 0, 8, 2, 1]).shuffle(6)
>>> iter(dataset).next().numpy()
0

# Batch
>>> dataset = tf.data.Dataset.from_tensor_slices([8, 3, 0, 8, 2, 1]).batch(2)
>>> iter(dataset).next().numpy()
array([8, 3], dtype=int32)

# Shuffle and Batch
>>> dataset = tf.data.Dataset.from_tensor_slices([8, 3, 0, 8, 2, 1]).shuffle(6).batch(2)
>>> iter(dataset).next().numpy()
array([3, 0], dtype=int32)

把两个Datsets压缩成一个

>>> dataset0 = tf.data.Dataset.from_tensor_slices([8, 3, 0, 8, 2, 1])
>>> dataset1 = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5, 6])
>>> dataset = tf.data.Dataset.zip((dataset0, dataset1))
>>> iter(dataset).next()
(<tf.Tensor: shape=(), dtype=int32, numpy=8>, <tf.Tensor: shape=(), dtype=int32, numpy=1>)

映射外部函数

def into_2(num):
     return num * 2
    
>>> dataset = tf.data.Dataset.from_tensor_slices([8, 3, 0, 8, 2, 1]).map(into_2)
>>> iter(dataset).next().numpy()
16

1(b). ImageDataGenerator

这是tensorflow.keras API的最佳特性之一。ImageDataGenerator能够在批处理和预处理以及数据增强的同时实时生成数据集切片。

生成器允许直接从目录或数据目录中生成数据流。

ImageDataGenerator中关于数据增强的一个误解是,它向现有数据集添加了更多的数据。虽然这是数据增强的实际定义,但是在ImageDataGenerator中,数据集中的图像在训练的不同步骤被动态地变换,使模型可以在未见过的有噪数据上进行训练。

train_datagen = ImageDataGenerator(
        rescale=1./255,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True
)

在这里,对所有样本进行重新缩放(用于归一化),而其他参数用于增强。

train_generator = train_datagen.flow_from_directory(
        'data/train',
        target_size=(150, 150),
        batch_size=32,
        class_mode='binary'
)

我们为实时数据流指定目录。这也可以使用dataframes来完成。

train_generator = flow_from_dataframe(
    dataframe,
    x_col='filename',
    y_col='class',
    class_mode='categorical',
    batch_size=32
)

x_col参数定义图像的完整路径,而y_col参数定义用于分类的标签列。

模型可直接用生成器来喂数据。需要指定steps_per_epoch参数,即number_of_samples // batch_size.

model.fit(
    train_generator,
    validation_data=val_generator,
    epochs=EPOCHS,
    steps_per_epoch=(num_samples // batch_size),
    validation_steps=(num_val_samples // batch_size)
)

2. 使用tf.image做数据增强

数据增强是必要的。在数据不足的情况下,对数据进行更改并将其作为单独的数据点来处理,是在较少数据下进行训练的一种非常有效的方式。

tf.image API中有用于转换图像的工具,然后可以使用tf.data进行数据增强。

flipped = tf.image.flip_left_right(image)
visualise(image, flipped)

上面的代码的输出
saturated = tf.image.adjust_saturation(image, 5)
visualise(image, saturated)

上面的代码的输出
rotated = tf.image.rot90(image)
visualise(image, rotated)

上面的代码的输出
cropped = tf.image.central_crop(image, central_fraction=0.5)
visualise(image, cropped)

上面的代码的输出

3. TensorFlow Datasets

pip install tensorflow-datasets

这是一个非常有用的库,因为它包含了TensorFlow从各个领域收集的非常著名的数据集。

import tensorflow_datasets as tfds

mnist_data = tfds.load("mnist")
mnist_train, mnist_test = mnist_data["train"], mnist_data["test"]
assert isinstance(mnist_train, tf.data.Dataset)

tensorflow-datasets中可用的数据集的详细列表可以在:https://www.tensorflow.org/datasets/catalog/overview中找到。

tfds提供的数据集类型包括:音频,图像,图像分类,目标检测,结构化数据,摘要,文本,翻译,视频。

4. 使用预训练模型进行迁移学习

迁移学习是机器学习中的一项新技术,非常重要。如果一个基准模型已经被别人训练过了,而且训练它需要大量的资源(例如:多个昂贵的gpu,一个人可能负担不起)。转移学习,解决了这个问题。预先训练好的模型可以在特定的场景中重用,也可以为不同的场景进行扩展。

TensorFlow提供了基准的预训练模型,可以很容易地为所需的场景扩展。

base_model = tf.keras.applications.MobileNetV2(
    input_shape=IMG_SHAPE,
    include_top=False,
    weights='imagenet'
)

这个base_model可以很容易地通过额外的层或不同的模型进行扩展。如:

model = tf.keras.Sequential([
    base_model,
    global_average_layer,
    prediction_layer
])

5. Estimators

估计器是TensorFlow对完整模型的高级表示,它被设计用于易于扩展和异步训练

预先制定的estimators提供了一个非常高级的模型抽象,因此你可以直接集中于训练模型,而不用担心底层的复杂性。例如:

linear_est = tf.estimator.LinearClassifier(
    feature_columns=feature_columns
)

linear_est.train(train_input_fn)
result = linear_est.evaluate(eval_input_fn)

这显示了使用tf.estimator. Estimators构建和训练estimator是多么容易。estimator也可以定制。

TensorFlow有许多estimator ,包括LinearRegressor,BoostedTreesClassifier等。

6. 自定义层

神经网络以许多层深网络而闻名,其中层可以是不同的类型。TensorFlow包含许多预定义的层(如density, LSTM等)。但对于更复杂的体系结构,层的逻辑要比基础的层复杂得多。对于这样的情况,TensorFlow允许构建自定义层。这可以通过子类化tf.keras.layers来实现。

class CustomDense(tf.keras.layers.Layer):
    def __init__(self, num_outputs):
        super(CustomDense, self).__init__()
        self.num_outputs = num_outputs

    def build(self, input_shape):
        self.kernel = self.add_weight(
            "kernel",
            shape=[int(input_shape[-1]),
            self.num_outputs]
        )

    def call(self, input):
        return tf.matmul(input, self.kernel)

正如在文档中所述,实现自己的层的最好方法是扩展 tf.keras.Layer类并实现:

  1. _init_,你可以在这里做所有与输入无关的初始化。

  2. build,其中你知道输入张量的形状,然后可以做剩下的初始化工作。

  3. call,在这里进行前向计算。

虽然kernel的初始化可以在*_init_中完成,但是最好在build中进行初始化,否则你必须在创建新层的每个实例上显式地指定input_shape*。

7. 自定义训练

tf.keras Sequential 和Model API使得模型的训练更加容易。然而,大多数时候在训练复杂模型时,使用自定义损失函数。此外,模型训练也可能不同于默认训练(例如,分别对不同的模型组件求梯度)。

TensorFlow的自动微分有助于有效地计算梯度。这些原语用于定义自定义训练循环。

def train(model, inputs, outputs, learning_rate):
    with tf.GradientTape() as t:
        # Computing Losses from Model Prediction
        current_loss = loss(outputs, model(inputs))
        
    # Gradients for Trainable Variables with Obtained Losses
    dW, db = t.gradient(current_loss, [model.W, model.b])
    
    # Applying Gradients to Weights
    model.W.assign_sub(learning_rate * dW)
    model.b.assign_sub(learning_rate * db)

这个循环可以在多个epoch中重复,并且根据用例使用更定制的设置。

8. Checkpoints

保存一个TensorFlow模型可以有两种方式:

  1. SavedModel:保存模型的完整状态以及所有参数。这是独立于源代码的。model.save_weights('checkpoint')

  2. Checkpoints

Checkpoints 捕获模型使用的所有参数的值。使用Sequential API或Model API构建的模型可以简单地以SavedModel格式保存。

然而,对于自定义模型,checkpoints是必需的。

检查点不包含模型定义的计算的任何描述,因此通常只有当源代码可用时,保存的参数值才有用。

保存 Checkpoint

checkpoint_path = “save_path”

# Defining a Checkpoint
ckpt = tf.train.Checkpoint(model=model, optimizer=optimizer)

# Creating a CheckpointManager Object
ckpt_manager = tf.train.CheckpointManager(ckpt, checkpoint_path, max_to_keep=5)

# Saving a Model
ckpt_manager.save()

从 Checkpoint 加载模型

TensorFlow从被加载的对象开始,通过遍历带有带有名字的边的有向图来将变量与检查点值匹配。

if ckpt_manager.latest_checkpoint:
    ckpt.restore(ckpt_manager.latest_checkpoint)

9. Keras Tuner

这是TensorFlow中的一个相当新的特性。

!pip install keras-tuner

超参数调优调优是对定义的ML模型配置的参数进行筛选的过程。在特征工程和预处理之后,这些因素是模型性能的决定性因素。

# model_builder is a function that builds a model and returns it
tuner = kt.Hyperband(
    model_builder,
    objective='val_accuracy', 
    max_epochs=10,
    factor=3,
    directory='my_dir',
    project_name='intro_to_kt'
)

除了HyperBand之外,BayesianOptimization和RandomSearch 也可用于调优。

tuner.search(
    img_train, label_train, 
    epochs = 10, 
    validation_data=(img_test,label_test), 
    callbacks=[ClearTrainingOutput()]
)

# Get the optimal hyperparameters
best_hps = tuner.get_best_hyperparameters(num_trials=1)[0]

然后,我们使用最优超参数训练模型:

model = tuner.hypermodel.build(best_hps)
model.fit(
    img_train, 
    label_train, 
    epochs=10, 
    validation_data=(img_test, label_test)
)

10. 分布式训练

如果你有多个GPU,并且希望通过分散训练循环在多个GPU上优化训练,TensorFlow的各种分布式训练策略能够优化GPU的使用,并为你操纵GPU上的训练。

tf.distribute.MirroredStrategy是最常用的策略。它是如何工作的呢?

  • 所有的变量和模型图被复制成副本。

  • 输入均匀分布在不同的副本上。

  • 每个副本计算它接收到的输入的损失和梯度。

  • 同步的所有副本的梯度并求和。

  • 同步后,对每个副本上的变量进行相同的更新。

strategy = tf.distribute.MirroredStrategy()with strategy.scope():
    model = tf.keras.Sequential([
        tf.keras.layers.Conv2D(
            32, 3, activation='relu',  input_shape=(28, 28, 1)
        ),
        tf.keras.layers.MaxPooling2D(),
        tf.keras.layers.Flatten(),
        tf.keras.layers.Dense(64, activation='relu'),
        tf.keras.layers.Dense(10)
    ])

    model.compile(
        loss="sparse_categorical_crossentropy",
        optimizer="adam",
        metrics=['accuracy']
    )

英文原文:https://towardsdatascience.com/10-tensorflow-tricks-every-ml-practitioner-must-know-96b860e53c1

TensorFlow 2.x 神经网络编译与训练:从损失函数选择到 Adam 优化器调参实战 本文深入探讨了TensorFlow 2.x中神经网络的编译与训练实践,从损失函数的选择到Adam优化器的调参技巧。通过详细的代码示例和工程实践指南,帮助开发者掌握神经网络训练的核心架构、数值稳定性优化以及高级训练技巧,提升模型性能与训练效率。 阅读详情

相关推荐

从7V到28V宽压输入,手把手教你设计一个5V/3A的DCDC电源模块(附MPS1584选型与原理图避坑)

本文详细解析了基于MPS1584芯片的7V至28V宽压输入到5V/3A输出的DCDC电源模块设计全流程。从电源架构选择、原理图设计要点到实际调试经验,涵盖了输入保护电路、功率转换核心电路及系统级优化测试,帮助工程师规避常见设计陷阱,实现高效稳定的电源解决方案。

weixin_33712987的博客 499

ResNet残差块实战:用TensorFlow 2.x从零搭建图像分类模型(附避坑指南)

本文详细介绍了如何使用TensorFlow 2.x从零开始搭建ResNet残差网络,并构建完整的图像分类模型。文章深入解析了残差块的设计原理,提供了基础块与瓶颈块的核心代码实现,并分享了针对CIFAR-10等数据集的实战训练技巧与关键调试方法,帮助开发者避开维度对齐、BatchNorm使用等常见陷阱,从而深入理解并掌握这一经典的计算机视觉架构。

weixin_29065959的博客 191

基于资源预测的Agent弹性伸缩:在成本与响应延迟间寻找最佳平衡点

手动伸缩:完全由运维人员人工调整副本数或服务器数量,效率极低,现在基本只用于极小规模的业务。反应式伸缩:基于当前实时监控指标触发伸缩规则,比如CPU利用率超过70%就加2个副本,是目前应用最广泛的方案,典型代表是K8s HPA、KEDA。预测式伸缩:基于历史时序数据预测未来的负载,提前进行伸缩,解决反应式伸缩的滞后性问题,典型代表是AWS Predictive Scaling、阿里云预测式HPA。智能Agent伸缩。

SuperAGI2025 134

tensorflow(1)---归一化

(1)归一化是属于预处理阶段的操作 (2)归一化所在库sklearn.processing中 (3)归一化是对数据中x进行转化,y不动(x为原始数据,y为分类标签) (4)归一化是把数据每列变换到差不多的数量级 (5)为什么归一化: 以线性回归y=w1*x1+w2*x2为例(不考虑偏置bias),假设x1为年龄(10,20,30,40),x2为收入(10000,20000,30000,40000),此时数量级x2>>x1(远远大于)。y不变,数量级w1>>w2,在梯度下降求

bester_man的博客 3245

疫情数据分析的“核武器”!JHU CSSE COVID-19数据集超深度解析与实战指南(附代码)

在面对这场没有硝烟的战争时,除了医护人员在前线与病毒搏斗,还有一群默默的英雄——数据科学家和分析师,他们利用手中的“数据武器”,昼夜不停地监测、分析、预测疫情走势,为政府决策、资源调配、公众科普提供了至关重要的支撑。同时,由于某些国家(如美国、加拿大、澳大利亚、中国等)的数据细化到省/州级别,为了得到国家层面的总数据,我们需要按国家和日期进行聚合。正是在这样的背景下,经过这些步骤,我们已经得到了一个包含了累计数据、每日新增数据和活跃病例数的完整数据集,可以开始进行深入的分析和可视化了!

wylee的博客 1165

10个算法从业人员必须知道的TensorFlow技巧

作者:Rohan Jagtap编译:ronghuaiyang导读掌握这些可以更高效的模型的提高开发效率。TensorFlow 2.x在构建模型和TensorFlow的整体使用方面提供了很...

abcdefg90876的博客 615

作为一名爬虫人如何实现千万级数据爬取?

爬虫门槛不高,高就高在往后余生的每一次实操都随时会让你崩溃!Bro

吴秋霖的博客 1万+

tensorflow 数据归一化_归一化  |  TensorFlow Addons

概述此笔记本将简要介绍 TensorFlow 的归一化层。当前支持的层包括:组归一化(TensorFlow Addons)实例归一化(TensorFlow Addons)层归一化(TensorFlow Core)这些层背后的基本理念是对激活层的输出进行归一化,以提升训练过程中的收敛。与批次归一化相反,这些归一化不适用于批次,而是用于归一化单个样本的激活,这样可使它们同样适用于循环神经网络。通常,通...

weixin_39757743的博客 2076

倍福---EL2262模块飞拍配置

控制器安装了twincat3,用EL2262实现相机飞拍功能。本文档只介绍如何通过EL2262实现飞拍的触发,并不涉及视觉方面的处理 参考文章: https://author.baidu.com/home?from=bjh_article&app_id=1669190598708386 https://mp.weixin.qq.com/s/r4Iq8kOP-o4_M8vCce5M9g 1、 飞拍的应用 在大多数场合,只能当被检测工件和相机都处于静止状态下才能进行拍照,拍照完成后,再移动工件或相机,进

weixin_41883890的博客 3742

使用FPGA实现MIPI DSI接口

通过使用FPGA,我们可以实现MIPI DSI接口,并在FPGA上生成相应的时序和电平转换电路。通过使用FPGA,我们可以实现MIPI DSI接口,并在FPGA上生成相应的时序和电平转换电路。在本文中,我们将探讨如何使用FPGA实现MIPI DSI接口,并提供相应的源代码。根据不同的发送状态,我们设置相应的输出信号。请注意,这只是一个基本的示例,用于说明如何使用FPGA实现MIPI DSI接口的发送功能。请注意,这只是一个基本的示例,用于说明如何使用FPGA实现MIPI DSI接口的发送功能。

ZdqDeveloper的博客 1700

tensorflow 数据归一化_TensorFlow实现批量归一化操作的示例

批量归一化在对神经网络的优化方法中,有一种使用十分广泛的方法——批量归一化,使得神经网络的识别准确度得到了极大的提升。在网络的前向计算过程中,当输出的数据不再同一分布时,可能会使得loss的值非常大,使得网络无法进行计算。产生梯度爆炸的原因是因为网络的内部协变量转移,即正向传播的不同层参数会将反向训练计算时参照的数据样本分布改变。批量归一化的目的,就是要最大限度地保证每次的正向传播输出在同一分布上...

weixin_39695323的博客 1274

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

TensorFlow 2.x性能优化与调试:10个提升训练效率的技巧

TensorFlow 2.x作为主流的深度学习框架,其训练效率直接影响模型开发周期和资源消耗。本文将分享10个实用的TensorFlow 2.x性能优化与调试技巧,帮助开发者快速定位问题、提升训练速度,让模型训练过程更加高效稳定。 ## 1. 合理配置数据集加载管道 ⚡️ 高效的数据加载是提升训练速度的基础。TensorFlow 2.x的`tf.data`模块提供了强大的数据处理能力,通过合理

gitblog_00012的博客 188

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

深度学习工具包 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'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('DeepLearnToolbox'));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('state',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'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',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 = 'sigm';%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, 'Too big error');```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('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';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)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';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, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% 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'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 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, 'Too big error');```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('state',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, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',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, 'Too big error');%% ex3 neural net with dropoutrand('state',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, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % 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, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % 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, 'Too big error');%% 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('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % 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, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

tensorflow 数据归一化_10个算法从业人员必须知道的TensorFlow技巧

作者:Rohan Jagtap编译:ronghuaiyang原文链接https://mp.weixin.qq.com/s/dRDilU4m3psBPJn8ngIZVQ​mp.weixin.qq.com导读掌握这些可以更高效的模型的提高开发效率。TensorFlow 2.x在构建模型和TensorFlow的整体使用方面提供了很多简单性。那么TF2有什么新变化呢?使用Keras轻松构建模型,立即执行。...

weixin_34593388的博客 1541

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SwiftMailer SMTP加密与认证详解:SSL、TLS与587端口配置全解

SwiftMailer 是 PHP 生态中经典的邮件发送组件,而 SMTP 加密与认证正是它最核心的能力。本文用通俗的方式带你彻底搞懂 SSL 与 TLS 的区别、587 端口的作用,以及如何在 SwiftMailer 中正确配置加密方式与认证模式,让你的 PHP 应用安全地发出每一封邮件 📧 ## 一、为什么 SMTP 加密配置如此重要 早期 SMTP 协议以明文传输:收件人、主题、正文甚

gitblog_00012的博客 565

EfficientNet实战:用TensorFlow 2.x在CIFAR-10上实现90%+准确率(附完整代码)

本文详细介绍了如何使用TensorFlow 2.x框架,在CIFAR-10数据集上应用EfficientNet模型实现超过90%的分类准确率。内容涵盖从环境搭建、数据预处理与增强、模型构建与定制,到训练策略、超参数调优以及最终模型微调与评估的完整实战流程,并提供了可运行的完整代码。

i0j1k2l3m的博客 335

Miniconda-Python3.10实战:快速安装PyTorch/TensorFlow框架

本文介绍了如何在星图GPU平台上自动化部署Miniconda-Python3.10镜像,快速搭建AI开发环境。通过该镜像,用户可以轻松创建独立的虚拟环境,并高效、无冲突地安装PyTorch或TensorFlow等主流框架,为机器学习模型训练与实验提供纯净、隔离的基础环境。

weixin_32252929的博客 251

CBAM注意力机制实战:用TensorFlow2.x从零实现混合注意力模块(附完整代码)

本文详细介绍了如何使用TensorFlow 2.x从零实现CBAM混合注意力机制,包括通道注意力机制和空间注意力机制的原理与代码实现。通过实战案例展示CBAM模块在提升模型性能方面的优势,帮助开发者快速掌握这一关键技术并应用于计算机视觉任务中。

weixin_30872499的博客 412

[深度学习] tensorflow1.x和tensorflow2.x对比与总结

tensorflow1.x和tensorflow2.x对比与总结1. 背景介绍2. 易于使用(Ease of use)3. 使用Eager模式(Eager Execution)4. 建立模型和部署变得容易(Model Building and deploying made easy)5. 简化了数据管道(The Data pipeline simplified)6. 一些重要的点是:7. 总结参考...

Harry的博客 1万+

anaconda3 安装 tensorflow1.x + tensorflow 2.x 步骤 (win10)

最近初学深度学习,原本是tensorflow 1.x 版本,找到应该pdf教程,用的是 2.x 版本,所以就试一下了。但是这个玩意儿挺麻烦,环境配置的时候遇到了很多坑,卸了装,装了卸,前前后后装了很多遍,报错也很多,足足折腾了两天多的时间,算是成功安装了,分享一下安装的步骤。 1. 安装anaconda3 首先安装anaconda3,这类教程很多了,不再赘述。 详细教程:Anaconda详细安装及使用教程 啰嗦一句,安装好了anaconda之后,为了让你的conda安装包的时候更好用,需要做以下两个事情。

StevenLin的博客 3581

Tensorflow1.x与Tensorflow2.0的区别

来源:斯坦福大学cs231n Historical background on TensorFlow 1.x TF1.x的历史背景 TensorFlow 1.x is primarily a framework for working with static computational graphs. Nodes in the computational graph are Tensors whi...

qq_44776899的博客 3万+

使用tensorflow2.x实现VGG

本文先介绍了VGG的基本原理,然后详细介绍了如何使用tensorflow2.x实现VGG网络。 其中VGG原理参考了https://zhuanlan.zhihu.com/p/41423739 文章中的代码已上传github:https://github.com/lujinhong/tensorflow-deeplearning-project 1、VGG原理 VGG是Oxford的Visual Geometry Group的组提出的(大家应该能看出VGG名字的由来了)。该网络是在ILSVRC 2014上的相

jediael_lu的专栏 2024

前言、为什么要学习TensorFlow2.x

其实在很久之前小编就想开设这样一个专栏了,毕竟TensorFlow2.x已经问世很久了。跟1.x相比,它真是有了太大的变化,现在TensorFlow已经到了2.4.0的版本了,所以小编就想总结一下,开始适应全新的2.x系列。本文算是整个专栏的开篇吧,除了论述之外,本文还会给出一个小编之前使用1.x版本的例子,以及小编是如何将例子中的代码修改使其适用于2.x版本的。下面就要开始我们的TensorFlow2.x的学习之旅了。关注专栏《一起来学TensorFlow2.x》,解锁更多相关内容~ ..

象在舞的技术专栏 6815

win10下python下载安装CUDA+tensorflow2.x使用gpu

一、首先要看看你的显卡是不是NVIDA的,是的话支不支持CUDA。只要支持,那你最好把驱动更新到最近一年内的版本。 1、CUDA支持的GPUs | NVIDIA Developer 这个网站有点慢,耐心点 2、查看一下你的驱动版本号够不够,windows下一定要下载最低CUDA10.1的版本!之前下载CUDA10.0的卸载了吧。 二、下载安装CUDA10.1和对应版本CuDNN 安装之前要先卸载之前的版本,并且你的计算机得有VS2017或者VS2019等。 1、给出两种下载方式 (1)百度云链接:下载 提

小白tree的博客 2737

TensorFlow 2.X,会是它走下神坛的开始吗?

文章转载自 机器之心 现在都要 2021 年了,机器学习好填的坑都已经填了,大家都在想怎么将模型用到各种实际任务上。我们再去讨论深度学习框架,吐槽它们的体验,会不会有点过时?并不会,新模型与新算法,总是框架的第一生产力。 从 Theano 一代元老,到 TensorFlow 与 PyTorch 的两元世界,到现在各个国产框架与工具组件的兴起。深度学习框架,总是跟随前沿 DL 技术的进步而改变。 不过今天并不是讨论深度学习框架的演变,而只是单纯分享一下在算法工程中,使用 TensorFlow 遇到的.

m0_46163918的博客 4331
上一篇: 连载翻译 | 流形学习的数学基础-2基础
下一篇: 连载翻译 | 流形学习的数学基础-3核学习
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值