一开始我安装了最新的Python 3.9版本。然而,在这个版本上我无法安装tensorflow,我读到它不支持这个版本。之后,我安装了Python 3.8.7,但我的jupyter笔记本仍然使用Python 3.9。如何更改 Jupyter Notebook 中的版本以使用 3.8.7 而不是 3.9?提前致谢。
我正在学习这个新的 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) 我构建了一个简单的 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) 我正在远程机器上运行 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)
任何帮助将不胜感激!
我正在遵循TensorFlow 官方网站上的迁移学习和微调指南。它指出在微调期间,批量归一化层应处于推理模式:
BatchNormalization关于图层的重要说明许多图像模型包含
BatchNormalization图层。从所有可以想象的角度来看,该层都是一个特例。以下是一些需要记住的事情。
BatchNormalization包含 2 个不可训练的权重,在训练期间更新。这些是跟踪输入的均值和方差的变量。- 当您设置 时
bn_layer.trainable = False,BatchNormalization图层将在推理模式下运行,并且不会更新其均值和方差统计数据。一般来说,其他层的情况并非如此,因为权重可训练性和推理/训练模式是两个正交的概念。但在层的情况下两者是并列的BatchNormalization。- 当您解冻包含
BatchNormalization图层的模型以进行微调时,您应该在调用基础模型时BatchNormalization通过传递将图层保持在推理模式。training=False否则,应用于不可训练权重的更新将突然破坏模型所学到的知识。您将在本指南末尾的端到端示例中看到此模式的实际应用。
尽管如此,其他一些来源,例如这篇文章(标题为 ResNet 的迁移学习),说了一些完全不同的内容:
Run Code Online (Sandbox Code Playgroud)for layer in resnet_model.layers: if isinstance(layer, BatchNormalization): layer.trainable = True else: layer.trainable = False
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
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
我有一个二维张量,我想获得前 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 ×4
tensorflow ×4
keras ×2
pytorch ×2
jupyter ×1
numpy ×1
onnx ×1
rsync ×1
tensor ×1
tensorboard ×1