【问题标题】:Getting Runtime error for cross entropy. What should be changed and why it is coming获取交叉熵的运行时错误。应该改变什么以及为什么要改变
【发布时间】:2021-04-23 01:43:14
【问题描述】:

我正在测试电影镜头数据集。我尝试将 nn.linear(n_act,5) 中的输出增加到 n_act,10 但没有任何效果

代码在下面,错误在后面

dls=CollabDataLoaders.from_df(ratings,item_name='Title',bs=64)

class deeplearn(Module):
    def __init__(self,user_size,movie_size,n_act=50,y_range=(0,5.5)):
        self.user_factors=create_params(user_size)
        self.movie_factors=create_params(movie_size)
        self.layers=nn.Sequential(
                    nn.Linear(user_size[1]+movie_size[1],n_act),
                    nn.ReLU(),
                    nn.Linear(n_act,5)
        )
        self.y_range=y_range
        
    def forward(self,x):
        embs=self.user_factors[x[:,0]],self.movie_factors[x[:,1]]
        x1=self.layers(torch.cat(embs,dim=1))
        return sigmoid_range(x1,*self.y_range)

embs=get_emb_sz(dls)        
n_users=6041
n_movies=3707

model = deeplearn(*embs)
learn3 = Learner(dls, model, loss_func=CrossEntropyLossFlat)
learn3.fit_one_cycle(5, 5e-3, wd=0.01)

执行getting之后 RuntimeError: 具有多个值的张量的布尔值不明确

RuntimeError                              Traceback (most recent call last)
nvs/tf-gpu/lib/python3.6/site-packages/torch/nn/_reduction.py in legacy_get_string(size_average, reduce, emit_warning)
     35         reduce = True
     36 
---> 37     if size_average and reduce:
     38         ret = 'mean'
     39     elif reduce:

RuntimeError: Boolean value of Tensor with more than one value is ambiguous

【问题讨论】:

  • 你能告诉我更多我应该提供哪些信息
  • 一个小而完整的例子,可以运行来观察错误。另外,这是整个错误跟踪吗?

标签: python pytorch


【解决方案1】:

尝试使用 CrossEntropy 的值,

loss = CrossEntropyLossFlat 
learn3 = Learner(dls, model, loss_func=loss)

这对我有用。

【讨论】:

  • 嗨!感谢你的回答。如果您花一些时间来解释为什么这有效,它将提高您的回答质量。
猜你喜欢
  • 2018-12-07
  • 1970-01-01
  • 2021-07-11
  • 2017-06-18
  • 2018-04-23
  • 2020-01-26
  • 1970-01-01
  • 1970-01-01
  • 2015-10-14
相关资源
最近更新 更多