小编DsC*_*Cpp的帖子

实时数据库 Firebase“全有或全无”事务

有没有办法在 RTDB 中操作事务 API 以进行“批量”写入?(我们目前无法迁移到 Firestore)
我们的问题如下:
当向服务器写入新的“作业”对象时,我们正在执行三个连续的写道:

  1. 使用GeoFire API编写位置键
  2. 写作业
  3. 将作业 ID 连接到创建它的用户

不幸的是,如果其中一个写入失败但前一个写入成功,则会导致系统出现重大错误。
我们正在寻找确保完整性的方法,或者在其中一个写入失败时恢复操作。

transactions firebase firebase-realtime-database

6
推荐指数
2
解决办法
4560
查看次数

使用 PyCharm 进行 pytorch 调试超时

我有一个令人沮丧的问题,我无法在 Pycharm 中调试我的 pytorch 代码。
在尝试检查(断点,然后打印例如)下面的代码时,我收到一个"Loading time out"

import torch

    tensors = []
    num_tensors = 16
    shape = (1, 3, 512, 512)
    for i in range(num_tensors):
        tensors.append(torch.zeros(shape))
Run Code Online (Sandbox Code Playgroud)

我看到了这个[1 , 2]帖子,将变量加载策略设置为同步,禁用 Qt 调试器选项,以及指定的所有选项,但我相信我缺少一些基本的东西。
pycharm 2019.2.5, 发生在python2python3

python pycharm pytorch

6
推荐指数
2
解决办法
369
查看次数

如何在数据加载器中使用批量采样器

我需要BatchSampler在 pytorch 中使用 a DataLoader,而不是__getitem__多次调用数据集(远程数据集,每个查询都很昂贵)。
我无法理解如何将批量采样器与任何给定的数据集一起使用。

例如

class MyDataset(Dataset):

    def __init__(self, remote_ddf, ):
        self.ddf = remote_ddf

    def __len__(self):
        return len(self.ddf)

    def __getitem__(self, idx):
        return self.ddf[idx] --------> This is as expensive as a batch call

    def get_batch(self, batch_idx):
        return self.ddf[batch_idx]

my_loader = DataLoader(MyDataset(remote_ddf), 
           batch_sampler=BatchSampler(Sampler(), batch_size=3))

Run Code Online (Sandbox Code Playgroud)

我不明白的是,在网上或火炬文档中都没有找到任何示例,我不明白的是如何使用我的get_batch函数而不是 __getitem__ 函数。
编辑:根据 Szymon Maszke 的回答,这就是我尝试过的,但\_\_get_item__每次调用都会获取一个索引,而不是大小列表batch_size

class Dataset(Dataset):

    def __init__(self):
       ...

    def __len__(self):
        ...

    def __getitem__(self, batch_idx):  ------> here I get only one …
Run Code Online (Sandbox Code Playgroud)

pytorch dataloader

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

访问std :: recursive_mutex使用的所有者计数器

我有一个案例,我的算法的决定是基于共享的深度std::recursive_mutex.

#include <iostream>
#include <mutex>
#include <thread>

int g_i = 0;
std::recursive_mutex g_i_mutex;

void bar() {
  std::lock_guard<std::recursive_mutex> lock(g_i_mutex);
  switch (get_counter(g_i_mutex)) { // some way to find the number of owners
    case 1: std::cout << "depth 1\n"; break;
    case 2: std::cout << "depth 2\n"; break;
    default:;
  }
}

void foo() {
   std::lock_guard<std::recursive_mutex> lock(g_i_mutex);
   std::cout << "hello\n";
   bar();
}

int main() {
  foo(); //print hello then depth 2
  bar(); //print depth 1
}
Run Code Online (Sandbox Code Playgroud)

我已经读过递归互斥锁持有某种使用计数,并且每次调用锁定/解锁时它们会增加和减少它,有没有办法访问这些信息?

c++ multithreading stl recursive-mutex

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

测试这是不是第一次用firebase调用facebook登录

对于 firebase 中的电子邮件和密码身份验证,我们同时具有“注册”和“登录”功能,但对于使用 Facebook 登录,我们只有登录(或者我错了?)
我正在尝试确定这是否是用户第一次使用此 facebook 帐户连接到应用程序,如果是,也将其添加到数据库中。

这是我当前的代码,因为 firebase 是一个异步数据库,这个机制不起作用

@Override
protected void onCreate (Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_customer);

    mLoginButton = (LoginButton) findViewById(R.id.login_button);
    mLoginButton.setVisibility(View.GONE);

    mCallbackManager = CallbackManager.Factory.create();
    mLoginButton.setReadPermissions("email", "public_profile");
    mLoginButton.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            handleFacebookAccessToken(loginResult.getAccessToken());
            Toast.makeText(MainCustomerActivity.this, "Login Success", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onCancel() {
            Toast.makeText(MainCustomerActivity.this, "Cancelled", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onError(FacebookException error) {
            Log.d(TAG, error.toString());
            Toast.makeText(MainCustomerActivity.this, "Error!", Toast.LENGTH_SHORT).show();
        }
    });

    private void handleFacebookAccessToken (AccessToken token) {
        Log.d(TAG, "handleFacebookAccessToken:" + token);

        AuthCredential credential = …
Run Code Online (Sandbox Code Playgroud)

android facebook-login firebase firebase-authentication

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

不可变键-Java中的固定长度映射

Java中有没有一种方法可以创建具有固定大小和长度的集合(地图)?即,我想用K个常量键(例如字符串)对其进行初始化,但仍然希望能够更改其值。

编辑: 测试用例具有固定数量的对象,每个对象对应一个数字(浮点数)。每次应用程序中发生特定事件时,我都希望将集合中的所有数字相乘,除了与“引起”该事件的对象相对应的数字。从逻辑上讲,该数字不是对象的属性。

java collections immutability

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

使用流根据键在键值对上应用不同的功能

目前代码使用普通的旧foreach循环

String preEvalObj = new String("123");
for(Map.Entry<String, Float> entry : someHashMap.entrySet()){
  String key = entry.getKey();
  Float value = entry.getValue();
  if(preEvalObj.equals(key)){
    lambda1Onvalue...
  }else{
    lambda2lambda1Onvalue..
  }
}
Run Code Online (Sandbox Code Playgroud)

而我正在努力实现类似的目标

someHashMap.entrySet().stream().apply((key,value) -> if preEvalObj.equals(key) lambda1 else lambda2)
Run Code Online (Sandbox Code Playgroud)

我可以使用流来实现我的目标吗?

java hashmap java-8 java-stream

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

张量流中每个通道单独的全连接层

有没有办法将不同的密集层应用于输入的每个通道?
即输入张量为 ,[batch,height,width,channels]我想对每个通道应用不同的密集层,从而具有#channels各层,每个层的输入为height*width
从张量流密集文档中我看到

Note: that if inputs have a rank greater than 2, then inputs is flattened prior to the initial matrix multiply by weights.
Run Code Online (Sandbox Code Playgroud)

在这种情况下,这不是期望的结果。

python tensorflow

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

标记器解码步骤中的标记到单词映射拥抱面?

有没有办法知道从标记到tokenizer.decode()函数中原始单词的映射?
例如:

from transformers.tokenization_roberta import RobertaTokenizer

tokenizer = RobertaTokenizer.from_pretrained('roberta-large', do_lower_case=True)

str = "This is a tokenization example"
tokenized = tokenizer.tokenize(str) 
## ['this', '?is', '?a', '?token', 'ization', '?example']

encoded = tokenizer.encode_plus(str) 
## encoded['input_ids']=[0, 42, 16, 10, 19233, 1938, 1246, 2]

decoded = tokenizer.decode(encoded['input_ids']) 
## '<s> this is a tokenization example</s>'
Run Code Online (Sandbox Code Playgroud)

目标是有一个函数将decode过程中的每个标记映射到正确的输入词,因为这里它将是:
desired_output = [[1],[2],[3],[4,5],[6]]
Asthis对应于 id 42,而tokenization对应于位于数组[19244,1938]索引4,5处的ids input_ids

tokenize pytorch huggingface-transformers

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

远程容器与代码中没有“打开容器中的文件夹”或任何其他命令

我正在使用远程计算机,并且想要在该计算机内运行 docker(本地->远程->docker),并希望使用容器工具中的远程开发,不幸vs code 的是,安装后我看不到任何操作扩大。我的看法 (ctrl+shift+p -> type remote-containers在此输入图像描述 虽然教程有我什至没有看到的操作: 在此输入图像描述

visual-studio-code vscode-remote

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