一开始我安装了最新的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