小编Ale*_*are的帖子

如何在 Google Colab 中获得分配的 GPU 规格

我正在使用 Google Colab 进行深度学习,我知道他们会随机将 GPU 分配给用户。我希望能够查看在任何给定会话中分配给我的 GPU。有没有办法在 Google Colab 笔记本中做到这一点?

请注意,如果有帮助,我正在使用 Tensorflow。

python gpu tensorflow google-colaboratory

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

VSCode 不会保存 Jupyter Notebook 中的更改(除非我运行包含更改的单元格)

我一直在丢失对某些单元格所做的更改,因为虽然我保存了笔记本文件,但我实际上并没有运行单元格(这适用于代码和降价单元格)。当我关闭文件时,不会出现“您想保存更改吗?”这样的警告。

我知道解决方法是在保存之前运行单元格。但这不是一个强大的工作设置。

有人有解决方案吗?如果有其他选择,我什至会将编辑器切换到具有类似感觉的东西。

ide visual-studio-code jupyter-notebook

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

如何从笔记本单元终止当前的 colab 会话

我正在努力成为一个好公民,并确保我的笔记本会话在运行后立即终止,即使我没有坐在我的机器前。

有没有我可以在笔记本单元中运行的代码来实现这一点?

python bash google-colaboratory

11
推荐指数
2
解决办法
621
查看次数

了解后向钩子

我在下面编写了这段代码,以尝试了解这些钩子发生了什么。

class Model(nn.Module):
    def __init__(self):
        super(Model, self).__init__()
        self.fc1 = nn.Linear(10,5)
        self.fc2 = nn.Linear(5,1)
        self.fc1.register_forward_hook(self._forward_hook)
        self.fc1.register_backward_hook(self._backward_hook)
    
    def forward(self, inp):
        return self.fc2(self.fc1(inp))

    def _forward_hook(self, module, input, output):
        print(type(input))
        print(len(input))
        print(type(output))
        print(input[0].shape)
        print(output.shape)
        print()

    def _backward_hook(self, module, grad_input, grad_output):
        print(type(grad_input))
        print(len(grad_input))
        print(type(grad_output))
        print(len(grad_output))
        print(grad_input[0].shape)
        print(grad_input[1].shape)
        print(grad_output[0].shape)
        print()

model = Model()
out = model(torch.tensor(np.arange(10).reshape(1,1,10), dtype=torch.float32))
out.backward()
Run Code Online (Sandbox Code Playgroud)

产生输出

<class 'tuple'>
1
<class 'torch.Tensor'>
torch.Size([1, 1, 10])
torch.Size([1, 1, 5])

<class 'tuple'>
2
<class 'tuple'>
1
torch.Size([1, 1, 5])
torch.Size([5])
torch.Size([1, 1, 5])
Run Code Online (Sandbox Code Playgroud)

您还可以按照此处的CNN 示例进行操作。事实上,需要理解我的问题的其余部分。 …

pytorch

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

多处理中的多线程有意义吗?

使用 Python 的多处理,在Pool其中包含一堆ThreadPools是否有意义?说我有这样的事情:

def task(path):
  # i/o bound
  image = load(path)
  # cpu bound but only takes up 1/10 of the time of the i/o bound stuff
  image = preprocess(img)
  # i/o bound
  save(image, path)
Run Code Online (Sandbox Code Playgroud)

然后我想处理一个路径列表path_list。如果我使用,ThreadPool我仍然会因为 cpu 绑定位而达到天花板。如果我使用 a ,Pool我会花太多时间等待 i/o。那么最好将path_list多个进程拆分为每个进程使用多个线程吗?

重申我的示例的另一种更简短的方法是,如果我有一个方法应该是多线程的,因为它是 i/o 绑定的,但我也想使用许多 cpu 内核怎么办?如果我使用 a,Pool我会将每个核心用于 I/O 绑定的单个任务。如果我使用一个,ThreadPool我只能使用一个核心。

python multithreading python-multiprocessing

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

如果我有完整路径,如何使用 Filesystem.readFile

在 Capacitor/Ionic/Angular 应用程序中,我试图允许用户拍摄视频,在<video>标签中查看它,并且当用户提交视频数据时,我还需要能够在 POST 请求中发送视频数据。

我正在使用 Cordova 的 MediaCapture 插件获取视频,所以我得到的内容包含一个fullPath表单file://......

我所坚持的一点实际上是从完整路径中获取一个 File/Blob 对象。

我尝试使用Filesystem.readFile()from Capacitor Plugins,但问题是它需要一个path: string和一个directory: FilesystemDirectory. 如果我尝试只提供,{path: fullPath}我会收到“文件不存在”错误。FilesystemDirectory 只是给了我几个选项供我选择,但我不想使用它,因为我已经有了完整路径并且不想检查我应该在哪个设备中使用哪个目录。

我还有其他方法可以解决这个问题吗?

cordova-plugins ionic4 capacitor

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

Python opencv cv2.VideoCapture.read() 第一次运行后无限期卡住

我在 python 上使用 opencv,但cv2.VideoCapture.read()遇到函数卡住的问题。下面是一些原型代码:

要求.txt

opencv-contrib-python==4.1.1.26
Run Code Online (Sandbox Code Playgroud)

应用程序.py

import cv2

def run_analysis(path_to_video):
    vs = cv2.VideoCapture(path_to_video)

    while True:
         frame = vs.read()
         if frame is None:
             break
         do_stuff_with_frame(frame)

    vs.release()
Run Code Online (Sandbox Code Playgroud)

这段代码在我的 mac 上一直有效。它仅在我第一次将其作为 Flask 应用程序部署到 Elastic Beanstalk(在 Red Hat Linux 上运行)时才有效。我在 github 问题中看到一些可能表明 vs.release() 无法释放文件指针,或者存在内存泄漏的东西,但我对这些概念不太了解。

即使我无法得到原因的答案,我也会很高兴以一种蛮力的方式让它发挥作用。

python video streaming opencv video-streaming

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

在 Ionic4/Angular 项目中安全存储 API 密钥的位置

我感觉我在这里问了错误类型的问题,因为它在 30 秒内无法通过谷歌搜索到。请告诉我。

无论如何,我已经environment.ts设置environment.prod.ts了后端和第三方服务的 url 和 api 密钥。但我读到,将 API 密钥保留在那里并不安全。我应该把它们放在哪里?如果确实在其他地方,最简单的方法是什么?

ionic-framework angular

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

贝叶斯优化可能不适用于 CNN 的一些原因是什么

我尝试将贝叶斯优化应用于 MNIST 手写数字数据集的简单 CNN,但几乎没有迹象表明它有效。我已经尝试进行 k 折验证以消除噪声,但似乎优化仍然没有在收敛到最佳参数方面取得任何进展。一般来说,贝叶斯优化可能失败的一些主要原因是什么?在我的特殊情况下?

其余的只是上下文和代码片段。

型号定义:

def define_model(learning_rate, momentum):
    model = Sequential()
    model.add(Conv2D(32, (3,3), activation = 'relu', kernel_initializer = 'he_uniform', input_shape=(28,28,1)))
    model.add(MaxPooling2D((2,2)))
    model.add(Flatten())
    model.add(Dense(100, activation='relu', kernel_initializer='he_uniform'))
    model.add(Dense(10, activation='softmax'))
    opt = SGD(lr=learning_rate, momentum=momentum)
    model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy'])
    return model
Run Code Online (Sandbox Code Playgroud)

使用超参数运行一次训练:batch_size = 32,学习率 = 1e-2,Momentum = 0.9,10 个 epoch。(蓝色 = 训练,黄色 = 验证)。

在此处输入图片说明

盒须图用于 5 折交叉验证的准确性,具有与上述相同的超参数(以了解传播)

在此处输入图片说明

网格搜索将 batch_size 保持在 32,并保持 10 个纪元。我是在单次评估而不是 5 倍上这样做的,因为差价不足以破坏结果。

在此处输入图片说明 在此处输入图片说明

贝叶斯优化。如上,batch_size=32 和 10 epoch。在相同的范围内搜索。但这一次使用 5 折交叉验证来消除噪音。它应该进行 100 次迭代,但这还需要 20 个小时。

space = …
Run Code Online (Sandbox Code Playgroud)

python hyperparameters conv-neural-network keras hyperopt

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

joblib.Parallel 如何处理全局变量?

我的代码看起来像这样:

from joblib import Parallel, delayed

# prediction model - 10s of megabytes on disk
LARGE_MODEL = load_model('path/to/model')

file_paths = glob('path/to/files/*')

def do_thing(file_path):
  pred = LARGE_MODEL.predict(load_image(file_path))
  return pred

Parallel(n_jobs=2)(delayed(do_thing)(fp) for fp in file_paths)
Run Code Online (Sandbox Code Playgroud)

我的问题是是否LARGE_MODEL会在循环的每次迭代中进行腌制/取消腌制。如果是这样,我如何确保每个工作人员都缓存它(如果可能的话)?

python parallel-processing joblib

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