小编Zac*_*mzi的帖子

完全卷积网络 - 训练数据中不同大小的图像

我正在尝试使用Keras库Tensorflow后端建模一个完全卷积的神经网络.

我面临的问题是分批饲喂不同大小的图像以实现model.fit()功能.训练集包括不同大小的图像,从768x501到1024x760不等.

不超过5张图像具有相同的尺寸,因此将它们分组成批似乎没有任何帮助.

Numpy允许以列表形式将数据存储在单个变量中.但keras model.fit()函数在接收列表类型训练数组时会引发错误.

我不希望调整大小并丢失数据,因为我已经拥有一个非常小的数据集.

我该如何培训这个网络?

python computer-vision deep-learning conv-neural-network keras

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

multiprocessing.Pool产生的进程多于仅在Google Cloud上请求的进程

我正在使用Python的multiprocessing.Pool类在进程之间分配任务.

简单的案例按预期工作:

from multiprocessing import Pool

def evaluate:
    do_something()

pool = Pool(processes=N)
for task in tasks:
    pool.apply_async(evaluate, (data,))
Run Code Online (Sandbox Code Playgroud)

产生了N个进程,它们不断地完成我传递给apply_async的任务.现在,我有另一种情况,我有许多不同的非常复杂的对象,每个对象都需要进行计算量大的活动.我最初让每个对象根据需要创建自己的multiprocessing.Pool 在它完成工作的时间,但我最终还是遇到了OSERROR具有开放的文件太多,即使我会假设池会得到使用后垃圾回收.

无论如何,我认为最好为这些复杂对象中的每一个共享同一个池进行计算:

from multiprocessing import Pool

def evaluate:
    do_something()

pool = Pool(processes=N)

class ComplexClass:

    def work:
        for task in tasks:
            self.pool.apply_async(evaluate, (data,))

objects = [ComplexClass() for i in range(50)]

for complex in objects:
    complex.pool = pool


while True:
    for complex in objects:
        complex.work()
Run Code Online (Sandbox Code Playgroud)

现在,当我在我的一台计算机上运行它(OS X,Python = 3.4)时,它就像预期的那样工作.产生了N个进程,每个复杂对象在每个进程中分配它们的任务.但是,当我在另一台计算机上运行它(运行Ubuntu的Google Cloud实例,Python = 3.5)时,会产生大量进程(>> N),整个程序因争用而停止运行.

如果我查看池以获取更多信息:

import random
random_object = random.sample(objects, 1)
print (random_object.pool.processes) …
Run Code Online (Sandbox Code Playgroud)

python multiprocessing google-cloud-platform

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

运行时错误:生成器需要“cuda”设备类型,但发现“cpu”

我正在尝试训练PeleeNet pytorch并收到以下错误

在此输入图像描述

train.py 80号线 在此输入图像描述

pelee_voc 列车配置 在此输入图像描述

python pytorch

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

Pytorch 和 TensorFlow 之间的 ImageNet 预训练 ResNet50 主干网不同

“显然!”,你可能会说……但是有一个显着的差异,我很难通过随机初始化的差异来解释。

采用两个预先训练的基网(在平均池化层之前)并为它们提供相同的图像,您会注意到输出特征不遵循相同的分布。具体来说,与Pytorch的主干相比, TensorFlow的主干具有更多受 ReLU 抑制的功能。此外,如第三张图所示,两个框架的动态范围不同。

特征分布

当然,这种差异被处理分类任务的密集层所吸收,但是:这种差异可以用训练过程中的随机性来解释吗?还是训练时间?或者还有其他什么可以解释这种差异吗?

重现代码:

import imageio
import numpy as np
image = imageio.imread("/tmp/image.png").astype(np.float32)/255

import tensorflow as tf
inputs = image[np.newaxis]
model = tf.keras.applications.ResNet50(include_top=False, input_shape=(None, None, 3))
output = model(inputs).numpy()
print(f"TensorFlow features range: [{np.min(output):.02f};{np.max(output):.02f}]")

import torchvision
import torch
model = torch.nn.Sequential(*list(torchvision.models.resnet50(pretrained=True).children())[0:8])
inputs = torch.tensor(image).permute(2,0,1).unsqueeze(0)
output = model(inputs).detach().permute(0,2,3,1).numpy()
print(f"Pytorch features range: [{np.min(output):.02f};{np.max(output):.02f}]")
Run Code Online (Sandbox Code Playgroud)

输出

TensorFlow features range: [0.00;25.98]
Pytorch features range: [0.00;12.00]
Run Code Online (Sandbox Code Playgroud)

注意:它与任何图像相似。

deep-learning tensorflow resnet pre-trained-model pytorch

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

在Jupyter Notebook中使用Joblib时不显示打印输出

因此,我正在使用joblib来并行化一些代码,并且我注意到在jupyter笔记本中使用它时无法打印内容。

我尝试在ipython中使用相同的示例,但效果很好。

这是在jupyter笔记本单元中编写的最小(非)工作示例

from joblib import Parallel, delayed
Parallel(n_jobs=8)(delayed(print)(i) for i in range(10))
Run Code Online (Sandbox Code Playgroud)

所以我得到的输出,[None, None, None, None, None, None, None, None, None, None]但什么都没有打印。

实际上,在检查笔记本进程的日志时,我注意到打印在那里进行。我希望打印发生在笔记本中,而不是笔记本过程的日志中。

编辑

我已经打开了一个Github问题,但是到目前为止关注的很少。

python printing joblib jupyter jupyter-notebook

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

如何在 TensorFlow 中有效地分配给张量的切片

我想在 TensorFlow 2.x 中的一个模型中为输入张量的切片分配一些值(我使用的是 2.2,但准备接受 2.1 的解决方案)。我正在尝试做的一个非工作模板是:

import tensorflow as tf
from tensorflow.keras.models import Model

class AddToEven(Model):
    def call(self, inputs):
        outputs = inputs
        outputs[:, ::2] += inputs[:, ::2]
        return outputs
Run Code Online (Sandbox Code Playgroud)

当然,在构建此 ( AddToEven().build(tf.TensorShape([None, None]))) 时,我收到以下错误:

TypeError: 'Tensor' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)

我可以通过以下方式实现这个简单的例子:

TypeError: 'Tensor' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)

(您可以通过以下方式进行完整性检查:

class AddToEvenScatter(Model):
    def call(self, inputs):
        batch_size = tf.shape(inputs)[0]
        n = tf.shape(inputs)[-1]
        update_indices = tf.range(0, n, delta=2)[:, None]
        scatter_nd_perm = [1, 0]
        inputs_reshaped = tf.transpose(inputs, scatter_nd_perm)
        outputs …
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow tensorflow2.x

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

尝试使用 gpu 导入 tensorflow 时出现导入错误

ImportError: libcuda.so.1: cannot open shared object file: No such file or directory
Failed to load the native TensorFlow runtime.
Run Code Online (Sandbox Code Playgroud)

导入时出现此错误tensorflow。我需要知道解决这个问题的步骤。

python gpu tensorflow

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

在配置文件中指定 Hydra 多次扫描

我想运行Hydra multirun,但在配置文件中指定扫描。\n我想知道在请求功能请求之前是否有办法执行此操作。

\n

到目前为止,我已经尝试过以下内容:

\n

树结构:

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 conf\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 compile\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 base.yaml\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 grid_search.yaml\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 config.yaml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 my_app.py\n
Run Code Online (Sandbox Code Playgroud)\n

内容my_appy.py

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 conf\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 compile\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 base.yaml\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 grid_search.yaml\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 config.yaml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 my_app.py\n
Run Code Online (Sandbox Code Playgroud)\n

内容conf/config.yaml

\n
import hydra\nfrom omegaconf import DictConfig, OmegaConf\n\n@hydra.main(config_path="conf", config_name="config")\ndef my_app(cfg : DictConfig) -> None:\n    print(OmegaConf.to_yaml(cfg, resolve=True))\n\nif __name__ == "__main__":\n    my_app()\n
Run Code Online (Sandbox Code Playgroud)\n

内容conf/compile/base.yaml

\n
defaults:\n  - compile: base\n
Run Code Online (Sandbox Code Playgroud)\n

内容conf/compile/grid_search.yaml

\n
loss: mse\noptimizer: adam\n …
Run Code Online (Sandbox Code Playgroud)

python fb-hydra

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

matplotlib相当于skimage.io.imread(fname,as_grey = True)吗?

由于这是一种非常普遍的做法...我想知道matplotlib是否等效于scikit-image中的此函数?

from skimage import io
im = io.imread(fname, as_grey=True)
Run Code Online (Sandbox Code Playgroud)

要直接读取RGB文件为灰度?

我需要使用等效的matplotlib,因为我正在使用它来绘制结果。正如我所观察到的,似乎io.imread读取的ndarray与plt.imread读取的ndarray不相等。

谢谢!

python matplotlib scipy scikit-image

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