小编Les*_*rel的帖子

如何更改 Jupyter Notebook 中的 Python 版本?

一开始我安装了最新的Python 3.9版本。然而,在这个版本上我无法安装tensorflow,我读到它不支持这个版本。之后,我安装了Python 3.8.7,但我的jupyter笔记本仍然使用Python 3.9。如何更改 Jupyter Notebook 中的版本以使用 3.8.7 而不是 3.9?提前致谢。

python jupyter

9
推荐指数
1
解决办法
3万
查看次数

意外的输入数据类型。实际:(tensor(double)) ,预期:(tensor(float))

我正在学习这个新的 ONNX 框架,它允许我们将深度学习(和其他)模型部署到生产中。

然而,我缺少一件事。我认为拥有这样一个框架的主要原因是为了推理目的,例如当我们有一个经过训练的模型并希望在不同的 venv 中使用它时(例如我们不能拥有 PyTorch),该模型仍然可以使用。

我在这里准备了一个“从头开始”的例子:

# Modules
import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.functional as F
from torch.utils.data import DataLoader, TensorDataset
import torchvision
import onnx
import onnxruntime
import matplotlib.pyplot as plt
import numpy as np


# %config Completer.use_jedi = False

# MNIST Example dataset
train_loader = torch.utils.data.DataLoader(
      torchvision.datasets.MNIST(
          'data', train=True, download=True,
          transform=torchvision.transforms.Compose([
              torchvision.transforms.ToTensor(),
          ])),
      batch_size=800)


# Take data and labels "by hand"
inputs_batch, labels_batch = next(iter(train_loader))


# Simple Model

class CNN(nn.Module):
    def …
Run Code Online (Sandbox Code Playgroud)

numpy pytorch onnx

8
推荐指数
2
解决办法
1万
查看次数

未知的图像文件格式。需要 JPEG、PNG、GIF、BMP 之一

我构建了一个简单的 CNN 模型,它引发了以下错误:

Epoch 1/10
235/235 [==============================] - ETA: 0s - loss: 540.2643 - accuracy: 0.4358
---------------------------------------------------------------------------
InvalidArgumentError                      Traceback (most recent call last)
<ipython-input-14-ab88232c98aa> in <module>()
     15     train_ds,
     16     validation_data=val_ds,
---> 17     epochs=epochs
     18 )

7 frames
/usr/local/lib/python3.7/dist-packages/tensorflow/python/eager/execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name)
     58     ctx.ensure_initialized()
     59     tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
---> 60                                         inputs, attrs, num_outputs)
     61   except core._NotOkStatusException as e:
     62     if name is not None:

InvalidArgumentError:  Unknown image file format. One of JPEG, PNG, GIF, BMP …
Run Code Online (Sandbox Code Playgroud)

python tensorflow

7
推荐指数
1
解决办法
2万
查看次数

为什么与 rsync 一起使用时 Tensorboard 不刷新?

我正在远程机器上运行 tensorflow 实验,不断写入同一个events.out.tfevents.xxx文件。我希望 tensorboard 每分钟左右自动刷新一次,显示新日志。当使用 sshfs 在我的笔记本电脑上安装远程机器并使用安装的目录运行 tensorboard 时,这确实有效。

但是,当使用 rsync 复制文件并在本地文件上运行 tensorboard 时,tensorboard 永远不会刷新,我必须重新启动它才能获得更新。

这是我的 rsync 命令:

rsync -aP --del -e ssh server_name:folder_on_server local_folder --exclude='*checkpoints*' --exclude='*.json' --exclude='*.DS_Store'
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!

rsync tensorflow tensorboard

5
推荐指数
1
解决办法
605
查看次数

如何在迁移学习期间冻结批标准化层

我正在遵循TensorFlow 官方网站上的迁移学习和微调指南。它指出在微调期间,批量归一化层应处于推理模式:

BatchNormalization关于图层的重要说明

许多图像模型包含BatchNormalization图层。从所有可以想象的角度来看,该层都是一个特例。以下是一些需要记住的事情。

  • BatchNormalization包含 2 个不可训练的权重,在训练期间更新。这些是跟踪输入的均值和方差的变量。
  • 当您设置 时bn_layer.trainable = FalseBatchNormalization图层将在推理模式下运行,并且不会更新其均值和方差统计数据。一般来说,其他层的情况并非如此,因为权重可训练性和推理/训练模式是两个正交的概念。但在层的情况下两者是并列的BatchNormalization
  • 当您解冻包含BatchNormalization图层的模型以进行微调时,您应该在调用基础模型时BatchNormalization通过传递将图层保持在推理模式。training=False否则,应用于不可训练权重的更新将突然破坏模型所学到的知识。

您将在本指南末尾的端到端示例中看到此模式的实际应用。

尽管如此,其他一些来源,例如这篇文章(标题为 ResNet 的迁移学习),说了一些完全不同的内容:

for layer in resnet_model.layers:
    if isinstance(layer, BatchNormalization):
        layer.trainable = True
    else:
        layer.trainable = False
Run Code Online (Sandbox Code Playgroud)

training无论如何,我知道 TensorFlow 中的和参数之间存在差异trainable

我正在从文件加载模型,如下所示:

model = tf.keras.models.load_model(path)
Run Code Online (Sandbox Code Playgroud)

我以这种方式解冻(或者实际上冻结其余部分)一些顶层:

model.trainable = True

for layer in model.layers:
    if layer not in model.layers[idx:]:
        layer.trainable = False …
Run Code Online (Sandbox Code Playgroud)

neural-network keras tensorflow batch-normalization tensorflow2.0

5
推荐指数
1
解决办法
5914
查看次数

启用急切执行时不支持 tf.gradients。使用 tf.GradientTape 代替

from tensorflow.keras.applications import VGG16
from tensorflow.keras import backend as K

model = VGG16(weights='imagenet',
              include_top=False)

layer_name = 'block3_conv1'
filter_index = 0

layer_output = model.get_layer(layer_name).output
loss = K.mean(layer_output[:, :, :, filter_index])

grads = K.gradients(loss, model.input)[0]
Run Code Online (Sandbox Code Playgroud)

我无法执行grads = K.gradients(loss, model.input)[0],它产生一个错误:tf.gradients is not supported when eager execution is enabled. Use tf.GradientTape instead

python keras tensorflow

2
推荐指数
1
解决办法
4802
查看次数

多维张量的前 K 个指数

我有一个二维张量,我想获得前 k 个值的索引。我知道pytorch 的 topk功能。pytorch 的 topk 函数的问题在于,它计算某个维度上的 topk 值。我想获得两个维度的 topk 值。

例如对于以下张量

a = torch.tensor([[4, 9, 7, 4, 0],
        [8, 1, 3, 1, 0],
        [9, 8, 4, 4, 8],
        [0, 9, 4, 7, 8],
        [8, 8, 0, 1, 4]])

Run Code Online (Sandbox Code Playgroud)

pytorch 的 topk 函数会给我以下信息。

values, indices = torch.topk(a, 3)

print(indices)
# tensor([[1, 2, 0],
#        [0, 2, 1],
#        [0, 1, 4],
#        [1, 4, 3],
#        [1, 0, 4]])

Run Code Online (Sandbox Code Playgroud)

但我想得到以下

tensor([[0, 1],
        [2, 0],
        [3, 1]])

Run Code Online (Sandbox Code Playgroud)

这是 …

python matrix-indexing pytorch tensor

1
推荐指数
1
解决办法
1591
查看次数