小编Des*_*eux的帖子

为什么安装工具在安装了 Python 和开发工具的 Ubuntu docker 映像环境中不可用?

我正在尝试为机器学习项目构建运行 Python 3.7 的 Ubuntu 18.04 Docker 映像。使用pipfrom安装特定的 Python 包时requirements.txt,出现以下错误:

\n
Collecting sklearn==0.0\n  Downloading sklearn-0.0.tar.gz (1.1 kB)\n  Preparing metadata (setup.py): started\n  Preparing metadata (setup.py): finished with status 'error'\n  error: subprocess-exited-with-error\n  \n  \xc3\x97 python setup.py egg_info did not run successfully.\n  \xe2\x94\x82 exit code: 1\n  \xe2\x95\xb0\xe2\x94\x80> [1 lines of output]\n      ERROR: Can not execute `setup.py` since setuptools is not available in the build environment.\n      [end of output]\n
Run Code Online (Sandbox Code Playgroud)\n

虽然这里的错误是在以下情况下出现的sklearn,但该问题并不特定于某个库;当我删除该库并尝试重建映像时,其他库会出现错误。

\n

这是我的Dockerfile

\n
FROM ubuntu:18.04\n\n# …
Run Code Online (Sandbox Code Playgroud)

python setuptools requirements.txt docker

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

尽管对 keras 中的零填充小批量 LSTM 训练进行掩码支持,但零预测

问题陈述

我在带有 tensorflow 后端(tf 版本 1.13.1)的 keras 中训练多对多 LSTM,用于标记文本序列,以使用预训练的 GloVe 嵌入来预测序列中每个元素的标记。我的训练方案涉及小批量随机梯度下降,每个小批量矩阵按列填充零以确保输入到网络的长度相等。

至关重要的是,由于任务和数据的性质对我的小批量进行自定义限制,我没有使用 keras 嵌入层。我的目标是为我的零填充单元实现屏蔽机制,以确保损失计算不会将这些单元虚假地视为真正的数据点。

方法

正如 keras文档中所解释的,keras 提供了三种设置掩蔽层的方法:

  1. keras.layers.Embedding图层配置mask_zeroTrue
  2. 添加keras.layers.Masking图层;
  3. 调用循环层时手动传递掩码参数。

因为我没有使用嵌入层来编码我的训练数据,所以我无法使用带有掩码嵌入层的选项 (1)。因此,我选择了 (2) 并在初始化我的模型后立即添加了一个遮罩层。然而,这种变化似乎没有产生影响。事实上,不仅我的模型的准确性没有提高,在预测阶段模型仍然产生零预测。为什么我的屏蔽层不屏蔽零填充的单元格?这是否与在我的密集层中指定 3 个类而不是 2 个(因此将 0 作为单独的类包括在内)的事实有关?

现有资源的限制

已经提出并回答了类似的问题,但我无法使用它们来解决我的问题。虽然这篇文章没有得到直接回应,但评论中提到的一个链接帖子侧重于如何预处理数据以分配掩码值,这在这里没有争议。然而,掩蔽层初始化与此处使用的相同。这篇文章提到了同样的问题 - 遮罩层对性能没有影响 - 答案以与我相同的方式定义遮罩层,但再次侧重于将特定值转换为遮罩值。最后,这篇文章中的答案提供了相同的层初始化,而无需进一步详细说明。

玩具数据生成

为了重现我的问题,我生成了一个包含两个类 (1,2) 的玩具 10 批次数据集。批是一个可变长度的序列,后填充零,最大长度为 20 个嵌入,每个嵌入向量由 5 个单元组成,因此input_shape=(20,5). 这两个类的嵌入值是从不同但部分重叠的截断正态分布生成的,从而为网络创建了一个可学习但并非微不足道的问题。我在下面包含了玩具数据,以便您可以重现该问题。

import pandas as pd
from keras.models import Sequential
from keras.layers import LSTM, …
Run Code Online (Sandbox Code Playgroud)

python deep-learning lstm keras mini-batch

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

TensorFlow 1.15 中使用 BiLSTM-CRF 实现 CRF 层

keras我使用&实现了带有条件随机场层 (BiLSTM-CRF) 的双向长短期记忆神经网络 (BiLSTM-CRF) keras_contrib(后者用于实现 CRF,它不是本机的一部分keras functionality。该任务被命名为实体识别分类为 6 种之一)网络的输入是一系列 300 维预训练的 GloVe 词嵌入。这是我的模型摘要:

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_1 (InputLayer)         (None, 648)               0   
_________________________________________________________________
embedding_1 (Embedding)      (None, 648, 300)          1500000   
_________________________________________________________________
bidirectional_1 (Bidirection (None, 648, 10000)        3204000   
_________________________________________________________________
crf_1 (CRF)                  (None, 648, 6)            6054      
=================================================================
Run Code Online (Sandbox Code Playgroud)

现在我想在TensorFlow1.15 中实现相同的模型。由于 keras_contrib CRF 模块仅适用于 keras 而不适用于 TensorFlow,因此我使用了TensorFlow存储库中为 1.X构建的 CRF 实现。该存储库包含两个很好的 CRF 示例实现(此处),但在使用我的数据进行训练时,每个示例都会产生不同的错误。

实施1

from tensorflow.keras.layers import Bidirectional, Embedding, LSTM, TimeDistributed …
Run Code Online (Sandbox Code Playgroud)

crf deep-learning lstm keras tensorflow

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

检索 R 中每个主成分的观察分数

我对数据框进行了主成分分析,以减少线性回归分析中的预测变量数量。

pr.out = prcomp(df, scale=TRUE)
pr.var = pr.out$sdev^2
pve = pr.var/sum(pr.var)
Run Code Online (Sandbox Code Playgroud)

完成此操作后,我想用解释最大比例方差的前几个主成分替换数据框中的旧变量。但是,在我的一生中,我无法找到每个主成分的观察向量(即每个数据点的 PC1 分数)。你知道我如何访问它们吗?pr.out$PC1例如,我尝试过,但会返回NULL.

r pca

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

Python属性错误:类型对象没有属性

我是Python和编程的新手(从12月开始),并尝试自学一些面向对象的Python并在我的lattest项目中得到这个错误:

AttributeError: type object 'Goblin' has no attribute 'color'
Run Code Online (Sandbox Code Playgroud)

我有一个文件来创建"Monster"类和一个从Monster类扩展的"Goblin"子类.当我导入两个类时,控制台不会返回任何错误

>>>from monster import Goblin
>>>
Run Code Online (Sandbox Code Playgroud)

即使创建实例也可以正常工作:

>>>Azog = Goblin
>>>
Run Code Online (Sandbox Code Playgroud)

但是当我调用我的Goblin类的属性时,控制台会在顶部返回错误,我不明白为什么.这是完整的代码:

import random

COLORS = ['yellow','red','blue','green']


class Monster:
    min_hit_points = 1
    max_hit_points = 1
    min_experience = 1
    max_experience = 1
    weapon = 'sword'
    sound = 'roar'

    def __init__(self, **kwargs):
        self.hit_points = random.randint(self.min_hitpoints, self.max_hit_points)
        self.experience = random.randint(self.min_experience,  self.max_experience)
        self.color = random.choice(COLORS)

        for key,value in kwargs.items():
            setattr(self, key, value)

    def battlecry(self):
        return self.sound.upper()


class Goblin(Monster):
    max_hit_points = 3
    max_experience = 2
    sound …
Run Code Online (Sandbox Code Playgroud)

python oop error-handling

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

诗歌:首先添加的库版本高于项目Python版本允许的版本

我已经使用poetryand创建了一个新环境python3.7,并尝试安装项目中的第一个包:numpy

\n

当我运行时,poetry add numpy出现以下错误:

\n
Using version ^1.22.4 for numpy\n\nUpdating dependencies\nResolving dependencies... (0.0s)\n\n  SolverProblemError\n\n  The current project's Python requirement (>=3.7,<4.0) is not compatible with some of the required packages Python requirement:\n    - numpy requires Python >=3.8, so it will not be satisfied for Python >=3.7,<3.8\n  \n  Because no versions of numpy match >1.22.4,<2.0.0\n   and numpy (1.22.4) requires Python >=3.8, numpy is forbidden.\n  So, because base-env depends on numpy (^1.22.4), version solving …
Run Code Online (Sandbox Code Playgroud)

python python-poetry

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