小编Nag*_*S N的帖子

在Tensorflow 1.13中串联两个保存的模型

我已经将一个预训练模型保存为ckpt文件(元,索引...),并且正在使用tf.train.import_meta_graph()和加载图形tf.train.Saver.restore()。我也有来自的resnet50模型tf.keras.applications。我需要将resnet模型的输出提供给从磁盘加载的模型。我该如何实现?

码:

resnet_model = ResNet50(include_top=False, pooling='avg')
preprocessed_video = preprocess_input(tf.cast(video, tf.float32))
features = self.resnet_model([preprocessed_video])

sess1 = tf.Session()
saver = tf.train.import_meta_graph(model_path.as_posix() + '.meta')
graph = tf.get_default_graph()
saver.restore(sess1, model_path.as_posix())
input_x = graph.get_tensor_by_name('input/Identity:0')
result = graph.get_tensor_by_name('output/Identity:0')
Run Code Online (Sandbox Code Playgroud)

我需要给featuresinput_x和得到result。请注意,这必须在构建图形时发生,而不是在运行时发生sess.run。我的意思是,不是全部videofeatures而是全部。所以我不能用tensorsnumpy.ndarraysess.run

编辑1
此答案中,我可以解决如下问题:

preprocessed_video = preprocess_input(tf.cast(video, tf.float32))
features = self.resnet_model([preprocessed_video])
sess1 = tf.Session()
saver = tf.train.import_meta_graph(model_path.as_posix() + '.meta', input_map={'input/Identity:0': features})
graph = tf.get_default_graph()
saver.restore(sess1, …
Run Code Online (Sandbox Code Playgroud)

python python-3.x tensorflow tf.keras

5
推荐指数
0
解决办法
34
查看次数

CondaHTTPError:dask-core-2.7.0-py_0.tar.bz2 未找到 HTTP 404

我正在尝试克隆一个环境

conda create -n myenv_legacy --clone myenv
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

CondaHTTPError: HTTP 404 NOT FOUND for url <https://conda.anaconda.org/conda-forge/noarch/dask-core-2.7.0-py_0.tar.bz2>
Run Code Online (Sandbox Code Playgroud)

该网址https://conda.anaconda.org/conda-forge/noarch/dask-core-2.7.0-py_0.tar.bz2不存在。但是dask-core-2.7.0-py_1.tar.bz2py_1,而不是 py_0 )存在。我该如何解决这个错误?

http-error python-3.x anaconda conda

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

无法在损失函数中使用 VGG 特征的 MSE

tf.kerastensorflow 2.0.0 我有一个网络中使用 keras ( ) ,它的输入是一个图像,输出也是一个图像。我想在 VGG 特征空间中使用 MSE、MSE 和其他一些损失的组合,这取决于中间层输出。我正在定义一个自定义损失函数。我能够构建模型,使用自定义损失进行编译。但是当我训练使用fit_generator,我得到了一个SymbolicException说法Inputs to eager execution function cannot be Keras symbolic tensors

完整代码
训练文件:

def __init__(self, gray_images: bool, verbose: bool = True):
    super().__init__(gray_images, verbose)
    self.model = None
    self.vgg_feature_extractor = VggFeaturesExtractor(model_name='vgg16', layers=[3, 6, 10])

def build_model():
    image_input = Input(shape=(None, None, num_input_channels))
    out1 = self.build_out1_model(image_input, num_filters, depth_t)
    out2 = self.build_out2_model(image_input, num_filters, depth_n, use_bnorm)
    enhanced_image = ... # Some function of image_input, out1 and out2

    self.model …
Run Code Online (Sandbox Code Playgroud)

python customization keras loss-function tensorflow2.0

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

两个分数之间的相关性,其中一个分数具有置信区间

scipy.stats模块有几个指标,例如pearsonrspearmanr用于计算两组分数之间的相关性。就我而言,一组分数实际上是多个分数的平均值,因此每个分数都有一个置信区间。是否有任何相关性指标可以利用置信区间并得出更好的分数?

python confidence-interval correlation

5
推荐指数
0
解决办法
42
查看次数

从 python 中的字典更新数据类字段

如何使用字典更新数据类的字段?

例子

@dataclass
class Sample:
    field1: str
    field2: str
    field3: str
    field4: str

sample = Sample('field1_value1', 'field2_value1', 'field3_value1', 'field4_value1')
updated_values = {'field1': 'field1_value2', 'field3': 'field3_value2'}
Run Code Online (Sandbox Code Playgroud)

我想做类似的事情

sample.update(updated_values)
Run Code Online (Sandbox Code Playgroud)

python python-3.7 python-dataclasses

5
推荐指数
2
解决办法
952
查看次数

Keras VGG 模型中 preprocess_input() 函数的作用是什么?

这个问题是对这个答案的评论中讨论的一种跟进。

据我了解,该preprocess_input()函数确实意味着输入图像的减法和 std-dev dvision。平均值是在训练 VGG 时在 ImageNet-1K 数据库上计算的平均值。

但是这个答案说当使用 VGG 特征作为损失函数时,preprocess_input()不是必需的,我们只需要[0,1]在传递给 VGG 之前将图像归一化到范围。这让我很困惑...

  1. 如果我们不进行预处理,那么与用于训练 VGG 的那些图像相比,输入将处于不同的范围内。VGG 功能如何仍然有效?
  2. 从我从这个答案中了解到,我们应该在[0,255]范围内设置图像,preprocess_input()函数负责规范化等等。从源代码中,我了解到对于 caffe 模型,[0,1]未完成对范围的归一化。相反,减去平均值并除以 std-dev。[0,1]本答案的评论中所建议的那样,将网络输出标准化到范围如何实现相同的效果?

编辑 1
我正在考虑输出图像的模型。它并不特定于单个模型。一个例子是图像去噪网络。我的网络的输入是一个嘈杂的图像,它的输出是一个去噪的图像。我想最小化 VGG 特征空间中去噪图像和地面实况图像之间的 MSE。无论我的网络输出的范围是多少,我都可以[0,255]通过乘以适当的因子轻松地将其更改为。同样,我可以对我的网络输出进行任何所需的预处理(减去平均值,除以 std-dev)。

根据经验,我发现预处理函数的输出在大约范围内[-128,151]。所以 VGG 网络是在这个范围内的图像上训练的。现在,如果我给它提供范围内的图像(或来自我的网络输出的张量)[0,1],卷积会很好,但偏差会导致问题,对吗?详细地说,对于范围内的图像[-128,151],一层 VGG 网络可能已经学习到了 5 的偏差。当我将范围内的图像提供[-1,1]给 VGG 网络时,偏差会破坏一切,对吗?

我不是在训练 VGG 模型。我正在使用在 ImageNet-1k 数据库上训练的模型的权重。

python keras tensorflow

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

PoseWarping:如何矢量化这个 for 循环(z-buffer)

我正在尝试使用地面实况深度图、姿势信息和相机矩阵将帧从 view1 扭曲到 view2。我已经能够删除大部分 for 循环并将其矢量化,除了一个 for 循环。变形时,由于遮挡,view1 中的多个像素可能会映射到 view2 中的单个位置。在这种情况下,我需要选择具有最低深度值的像素(前景对象)。我无法矢量化这部分代码。任何帮助向量化这个 for 循环表示赞赏。

语境:

考虑到地面实况姿势、深度和相机矩阵,我正在尝试将图像变形为新视图。在计算扭曲的位置后,我将它们四舍五入。也欢迎任何实现逆双线性插值的建议。我的图像是全高清分辨率。因此,将帧扭曲到新视图需要花费大量时间。如果可以矢量化,我计划将代码转换为 TensorFlow 或 PyTorch 并在 GPU 上运行。也欢迎任何其他加快变形或现有实现的建议。

代码:

def warp_frame_04(frame1: numpy.ndarray, depth: numpy.ndarray, intrinsic: numpy.ndarray, transformation1: numpy.ndarray,
                  transformation2: numpy.ndarray, convert_to_uint: bool = True, verbose_log: bool = True):
    """
    Vectorized Forward warping. Nearest Neighbor.
    Offset requirement of warp_frame_03() overcome.
    mask: 1 if pixel found, 0 if no pixel found
    Drawback: Nearest neighbor, collision resolving not vectorized
    """
    height, width, _ = frame1.shape
    assert depth.shape == (height, width) …
Run Code Online (Sandbox Code Playgroud)

python numpy computer-vision tensorflow pytorch

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

优化 pytorch 数据加载器以读取全高清图像中的小补丁

我正在使用 PyTorch 框架训练我的神经网络。数据是全高清图像 (1920x1080)。但是在每次迭代中,我只需要从这些图像中裁剪出一个随机的 256x256 补丁。我的网络相对较小(5 个卷积层),因此瓶颈是由加载数据引起的。我在下面提供了我当前的代码。有什么方法可以优化加载数据并加快训练速度?

代码

from pathlib import Path

import numpy
import skimage.io
import torch.utils.data as data

import Imath
import OpenEXR


class Ours(data.Dataset):
    """
    Loads patches of resolution 256x256. Patches are selected such that they contain atleast 1 unknown pixel
    """

    def __init__(self, data_dirpath, split_name, patch_size):
        super(Ours, self).__init__()
        self.dataroot = Path(data_dirpath) / split_name
        self.video_names = []
        for video_path in sorted(self.dataroot.iterdir()):
            for i in range(4):
                for j in range(11):
                    view_num = i * 12 + j
                    self.video_names.append((video_path.stem, …
Run Code Online (Sandbox Code Playgroud)

python performance pytorch dataloader pytorch-dataloader

5
推荐指数
0
解决办法
209
查看次数

打印损失函数 tensorflow 2.0 的所有项

我正在定义一个自定义损失函数。例如,让我们以loss function = L1 loss + L2 loss. When I domodel.fit_generator()为例,在每批之后打印整体损失函数。但我想看到的个人价值观L1 lossL2 loss。我怎样才能做到这一点?我想知道单个术语的值以了解它们的相对比例。

  1. tf.print(l1_loss, output_stream=sys.stdout)正在抛出异常说tensorflow.python.eager.core._FallbackException: This function does not handle the case of the path where all inputs are not already EagerTensors.

  2. 甚至tf.print('---')只是---在开始打印而不是每批打印。

  3. tf.keras.backend.print_tensor(l1_loss) 没有打印任何东西

python logging tensorflow tf.keras tensorflow2.0

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

在 Windows 10 中,“java”不被识别为内部或外部命令、可操作程序或批处理文件

我知道这是网络上的一个流行问题,但即使在设置JAVA_HOMEenv 变量并添加%JAVA_HOME%\bin\到 Path 变量之后,我也会收到此错误。

我正在尝试使用需要 Java 的PDF Presenter应用程序。因此,我下载了 Oracle JDK ( jdk-14.0.1_windows-x64_bin.exe ) 并安装它,然后配置了上述两个变量。

如果我输入%JAVA_HOME%\bin\java.exe --version,它工作正常。但如果我输入java.exejava,我会在标题中收到错误。我怎样才能解决这个问题?

这是输出echo %PATH%

C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\Git\cmd;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files\MiKTeX 2.9\miktex\bin\x64\;%JAVA_HOME%\bin\;C:\Users\Nagabhushan\AppData\Local\Microsoft\WindowsApps;
Run Code Online (Sandbox Code Playgroud)

java

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