小编W.P*_*ill的帖子

在Scala中,如何在运行时按照已知类型进行过滤?

我有一个包含不同子类型对象的Scala集合.

abstract class Base

class A extends Base

class B extends Base

val a1 = new A()
val a2 = new A()
val b = new B()
val s = List(a1, a2, b)
Run Code Online (Sandbox Code Playgroud)

我想过滤掉所有A对象或B对象.如果我知道在编译时要过滤的对象,我可以很容易地做到这一点.

s.filter(_.isInstanceOf[A]) // Give me all the As
s.filter(_.isInstanceOf[B]) // Give me all the Bs
Run Code Online (Sandbox Code Playgroud)

如果我只知道要在运行时过滤的对象类型,我可以这样做吗?我想写一个这样的函数.

def filterType(xs:List[Base], t) = xs.filter(_.isInstanceOf[t])
Run Code Online (Sandbox Code Playgroud)

Where t表示我是否需要类型A或对象B.

当然,由于类型擦除,我实际上无法以这种方式编写它.有没有惯用的Scala方法来解决这个使用类型标签?我一直在阅读Scala类型标记文档和相关的StackOverflow帖子,但我无法弄明白.

scala type-erasure

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

我将AWS访问密钥添加到哪个core-site.xml?

我想在EC2上运行Spark代码以防止存储在我的S3存储桶中的数据.根据Spark EC2文档Amazon S3文档,我必须将我的AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY添加到core-site.xml文件中.但是,当我进入主EC2节点时,我会看到几个core-site.xml文件.

$ find . -name core-site.xml
./mapreduce/conf/core-site.xml
./persistent-hdfs/share/hadoop/templates/conf/core-site.xml
./persistent-hdfs/src/packages/templates/conf/core-site.xml
./persistent-hdfs/src/contrib/test/core-site.xml
./persistent-hdfs/src/test/core-site.xml
./persistent-hdfs/src/c++/libhdfs/tests/conf/core-site.xml
./persistent-hdfs/conf/core-site.xml
./ephemeral-hdfs/share/hadoop/templates/conf/core-site.xml
./ephemeral-hdfs/src/packages/templates/conf/core-site.xml
./ephemeral-hdfs/src/contrib/test/core-site.xml
./ephemeral-hdfs/src/test/core-site.xml
./ephemeral-hdfs/src/c++/libhdfs/tests/conf/core-site.xml
./ephemeral-hdfs/conf/core-site.xml
./spark-ec2/templates/root/mapreduce/conf/core-site.xml
./spark-ec2/templates/root/persistent-hdfs/conf/core-site.xml
./spark-ec2/templates/root/ephemeral-hdfs/conf/core-site.xml
./spark-ec2/templates/root/spark/conf/core-site.xml
./spark/conf/core-site.xml
Run Code Online (Sandbox Code Playgroud)

经过一些实验,我确定s3n://mcneill-scratch/GR.txt只有将我的凭据添加到mapreduce/conf/core-site.xml和spark/conf/core-site.xml ,我才能访问类似Spark 的s3n url .

这对我来说似乎不对.这不是DRY,我在文档中找不到任何说明你必须将你的凭证添加到多个文件的内容.

是否通过core-site.xml修改多个文件以设置s3凭据的正确方法?那里有文件可以解释这个吗?

amazon-s3 amazon-ec2 apache-spark

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

如何计算两个Keras张量的平方差?

我有一个Keras Model,它计算两个张量r1并且r2形状相同。我想让模型计算(r1 - r2)**2

我可以用来计算这些张量的总和keras.layers.add(r1, r2)。我可以带一个产品keras.layers.multiply(r1, r2)。如果有一个subtract功能,我会写

r = keras.layers.subtract(r1, r2)
square_diff = keras.layers.multiply(r, r)
Run Code Online (Sandbox Code Playgroud)

但似乎没有keras.layers.subtract功能。

取而代之的是,我一直试图找出如何将一个输入与一个恒定的-1张量相乘然后相加,但是我无法弄清楚如何创建该-1张量。我已经尝试了多种变体

negative_one = keras.backend.constant(np.full(r1.get_shape()), -1)
Run Code Online (Sandbox Code Playgroud)

没有一个工作。大概是因为的维数r1(?, 128)(即,第一维是批处理大小,第二维代表128个隐藏元素。)

在Keras中采用两个张量之差的正确方法是什么?

keras

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

Keras 在训练分类 LSTM 序列到序列模型时给出 nan

我正在尝试编写一个 Keras 模型(使用 Tensorflow 后端),该模型使用 LSTM 来预测序列的标签,就像在词性标记任务中一样。我写的模型返回nan所有​​训练时期和所有标签预测的损失。我怀疑我的模型配置不正确,但我无法弄清楚我做错了什么。

\n\n

完整的程序在这里。

\n\n
from random import shuffle, sample\nfrom typing import Tuple, Callable\n\nfrom numpy import arange, zeros, array, argmax, newaxis\n\n\ndef sequence_to_sequence_model(time_steps: int, labels: int, units: int = 16):\n    from keras import Sequential\n    from keras.layers import LSTM, TimeDistributed, Dense\n\n    model = Sequential()\n    model.add(LSTM(units=units, input_shape=(time_steps, 1), return_sequences=True))\n    model.add(TimeDistributed(Dense(labels)))\n    model.compile(loss=\'categorical_crossentropy\', optimizer=\'adam\')\n    return model\n\n\ndef labeled_sequences(n: int, sequence_sampler: Callable[[], Tuple[array, array]]) -> Tuple[array, array]:\n    """\n    Create training data for a sequence-to-sequence labeling model.\n\n    The features are an …
Run Code Online (Sandbox Code Playgroud)

python machine-learning keras

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

如何使用Bluebird解决一组promise和值

我有一个列表值

xs = [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

我还有一个异步函数square,它返回传递给它的参数的平方的promise.我希望将我的列表元素并行传递给我的函数,然后将promises收集到一个数组中并等待它们全部完成.我可以将其表示为map/reduce操作.

Promise
.map(xs, function(x) {
        return square(x)
    }
)
.reduce(function(ys, y) {
        return ys.concat(y)
    }, [])
Run Code Online (Sandbox Code Playgroud)

这最终返回已解析的值

[1, 4, 9, 16]
Run Code Online (Sandbox Code Playgroud)

很容易.现在说我想在答案数组中包含原始参数.

[{x:1, y:1}, {x:2, y:4}, {x:3, y:9}, {x:4, y:16}]
Run Code Online (Sandbox Code Playgroud)

棘手的部分现在我有一个对象列表,每个对象在reduce步骤的开头都有一个隐藏在其y属性中的承诺.如何编写Bluebird代码来执行此缩减步骤?

javascript promise bluebird

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

如何使用来自离散和连续特征混合的互信息来 SelectKBest?

我正在使用 scikit learn 来训练分类模型。我的训练数据中既有离散特征也有连续特征。我想使用最大互信息进行特征选择。如果我有向量x和标签y并且前三个特征值是离散的,我可以获得 MMI 值,如下所示:

mutual_info_classif(x, y, discrete_features=[0, 1, 2])
Run Code Online (Sandbox Code Playgroud)

现在我想在管道中使用相同的互信息选择。我想做这样的事情

SelectKBest(score_func=mutual_info_classif).fit(x, y)
Run Code Online (Sandbox Code Playgroud)

但没有办法将离散特征掩码传递给SelectKBest. 是否有一些我忽略的语法可以做到这一点,或者我是否必须编写自己的评分函数包装器?

feature-selection scikit-learn

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

Twine 不允许我注册或上传我的包:https://upload.pypi.org/legacy/ 错误吗?

我有一个要在 PyPI 上注册的Python 包。我正在尝试使用最新版本的麻线 (1.9.1) 并按照麻线网页上的说明进行操作

我在本地正确配置了我的包。(setup.py是完整的。)该名称尚未在 PyPI 上声明。我在 PyPI 上有一个帐户。~/.pypirc我的机器上没有 文件。我已经构建了一个源代码分发和一个轮子。

> ll dist
total 64
-rw-r--r--  1 billmcn  staff  14184 Aug  1 13:35 mycroft-1.1.0.tar.gz
-rw-r--r--  1 billmcn  staff  15996 Aug  1 13:36 mycroft-1.1.0-py3-none-any.whl
Run Code Online (Sandbox Code Playgroud)

当我尝试注册这些软件包中的任何一个时,我收到以下错误消息。

> twine register dist/mycroft-1.1.0.tar.gz 
Registering package to https://upload.pypi.org/legacy/
Enter your username: billmcn
Enter your password: 
Registering mycroft-1.1.0.tar.gz
HTTPError: 410 Client Error: Project pre-registration is no longer required or supported, so continue directly to uploading files. for …
Run Code Online (Sandbox Code Playgroud)

python package pypi twine

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

PyCharm 无法连接到 Docker,认为 Docker 守护进程没有运行

Docker 的 PyCharm 接口突然停止在我的 Mac 上工作。当我尝试连接到 Docker 时,收到错误消息“无法连接到位于 unix:///var/run/docker.sock 的 Docker 守护进程。docker 守护进程正在运行吗?”。

Docker 似乎工作正常。docker info返回合理的结果。Docker 桌面正在运行。我可以通过 Docker Desktop 启动一个容器并连接到它。基巴纳可以工作。唯一看起来奇怪的是它/var/run/docker.sock并不存在。

docker.sock难道是一个不存在的问题吗?

Docker 的 PyCharm 配置如下所示:

在此输入图像描述

我没有改变它,因为一切正常。

一个常见的解决方案建议在线更改文件的权限/var/run/docker.sock,但显然我不能这样做。有各种各样的事情可以尝试,但大多数都需要 sudo,而我在这台机器上没有管理员权限。有一个 Stack Overflow 问题描述了相同的情况,但问题是 Docker 无法在没有 sudo 的情况下运行,但这里不是这种情况。

特别奇怪的是,几天前它还可以工作,据我所知,机器上没有任何变化。相同的 PyCharm 设置、相同的 Docker、相同的操作系统。我上线了

  • Python 社区版 2021.2.3
  • Docker 版本 20.10.22,内部版本 3a2c30b
  • Mac OSX 文图拉 13.1

我尝试过重新启动系统。

关于什么被破坏了有什么想法吗?

macos pycharm docker docker-daemon

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

我在哪里可以在 IntelliJ 中输入 Homebrew Scala 路径 /usr/local/opt/scala/idea?

当您使用 Homebrew 安装 Scala 时,您会被告知

To use with IntelliJ, set the Scala home to:
  /usr/local/opt/scala/idea
Run Code Online (Sandbox Code Playgroud)

这到底是什么意思?IntelliJ 中是否有全局设置,您可以在其中输入此路径?

具体来说,我很困惑,因为我试图在 IntelliJ 中创建 SBT 支持的项目。在 IntelliJ 中,我执行 New Project -> Scala:SBT 并让 IDE 为我创建一个默认项目。我得到一个看起来像这样的 build.sbt:

name := "HelloScala"

version := "1.0"
Run Code Online (Sandbox Code Playgroud)

这看起来是正确的。但是,依赖项是 Scala 2.10.2,而我的机器上最新的 Homebrew 安装的 Scala(如果我scala在命令行中输入就会被使用)是 2.11.0。我认为问题是我没有/usr/local/opt/scala/idea正确设置,但我没有看到 IntelliJ UI 中输入此路径信息的位置。具体来说,IntelliJ 首选项都没有“Scala 发行版路径”等文本框。

如何使用 IntelliJ 正确设置 Homebrew Scala?

IntelliJ 13.1.2,OS X 10.9.2

homebrew scala intellij-idea sbt

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

如何将简单的训练样式数据转换为spaCy的命令行JSON格式?

我在spaCy文档的“训练其他实体类型”部分中有关于新NER类型的训练数据。

TRAIN_DATA = [
    ("Horses are too tall and they pretend to care about your feelings", {
        'entities': [(0, 6, 'ANIMAL')]
    }),

    ("Do they bite?", {
        'entities': []
    }),

    ("horses are too tall and they pretend to care about your feelings", {
        'entities': [(0, 6, 'ANIMAL')]
    }),

    ("horses pretend to care about your feelings", {
        'entities': [(0, 6, 'ANIMAL')]
    }),

    ("they pretend to care about your feelings, those horses", {
        'entities': [(48, 54, 'ANIMAL')]
    }),

    ("horses?", {
        'entities': …
Run Code Online (Sandbox Code Playgroud)

spacy

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

在Scala集中覆盖toString

我想创建一组名为的整数IntSet.除了它的函数以逗号分隔(与调用时相同)打印元素之外,它在每个方面IntSet都是相同的,并且它有一个带有整数的构造函数.最简单的方法是什么?Set[Int]toStringmkString(",")Traversable

> IntSet((1 to 3)).toString
1,2,3
Run Code Online (Sandbox Code Playgroud)

我认为会有一些单行方式来做到这一点,但我一直在摆弄隐式函数和扩展HashSet,我无法弄明白.


诀窍是使用代理对象.Eastsun的答案如下.这是一个稍微不同的版本,它定义了一个命名IntSet类型并使其不可变.

import collection.immutable.{HashSet, SetProxy}

class IntSet(values: Traversable[Int]) extends SetProxy[Int] {
  override val self: Set[Int] = HashSet(values.toSeq:_*)
  override def toString() = mkString(",")
}
Run Code Online (Sandbox Code Playgroud)

scala tostring scala-collections

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

Scala超类构造函数中的"参数太多"错误,但在REPL中没有

我正在编写一个类,它使用一些自定义构造函数逻辑扩展了Scala的不可变映射.举一个简单的例子,假设我想要一个整数映射到初始化为的字符串1 -> "one", 2 -> "two".在REPL中我可以写下面的内容.

scala> import collection.immutable.HashMap
import collection.immutable.HashMap

scala> HashMap[Int, String](1->"one", 2->"two")
res0: scala.collection.immutable.HashMap[Int,String] = Map(1 -> one, 2 -> two)
Run Code Online (Sandbox Code Playgroud)

在我的程序中,我想使用相同的构造函数调用,但是当我尝试将它放在类定义行中时,我得到"构造函数的参数太多"错误.

scala> class MyMap extends HashMap[Int, String](1->"1", 2->"2")
<console>:8: error: too many arguments for constructor HashMap: ()scala.collection.immutable.HashMap[Int,String]
   class MyMap extends HashMap[Int, String](1->"1", 2->"2")
               ^
Run Code Online (Sandbox Code Playgroud)

鉴于调用超类构造函数的方法是在类定义中,我认为HashMap在REPL 中创建a的任何表达式也应该在定义中起作用,但是我在这里缺少一些细微之处.

(我认为扩展具体类HashMap而不是特性是正确的,因为我想使用默认的地图实现.扩展HashMap是我在Java中所做的,但我不是100%肯定扩展具体的集合类是Scalaesque最常用的操作方式.)

因为我想MyMap成为不可变的,所以我需要在构造函数时指定初始值.我可以尝试apply在伴侣对象的函数内进行初始化,如下所示:

class MyMap extends HashMap[Int, String]

object MyMap {
  def apply() = new MyMap ++ List(1 -> …
Run Code Online (Sandbox Code Playgroud)

constructor scala compiler-errors

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

IntelliJ Tomcat运行配置不设置环境变量

我在OS X上使用IntelliJ Ultimate 2016.1.2运行Tomcat 8.0.35.我想在调试器下本地运行Tomcat并将我的Web应用程序部署到它.我创建了一个本地Tomcat服务器运行配置.在"部署"选项卡中,我指定了要部署的WAR文件.

我的web应用需要REDIS_HOST_MMREDIS_PORT_MM环境变量进行设置.我在运行配置的Startup/Connection选项卡中设置了这些.

Tomcat运行配置的启动/连接选项卡

Tomcat启动并且我的Web应用程序已部署,但是未设置环境变量.我可以在我的Web应用程序代码中的以下行放置一个断点

String _value = System.getenv(value);
Run Code Online (Sandbox Code Playgroud)

并且看到当value等于"REDIS_HOST_MM"时,调用返回null.

如果我将"服务器"选项卡中的"VM选项"设置为,则会出现同样的问题-DREDIS_HOST_MM=127.0.0.1 -DREDIS_PORT_MM=6379.此外,如果我将启动脚本更改为指向以下shell脚本

export REDIS_HOST_MM=127.0.0.1
export REDIS_PORT_MM=6379
/usr/local/Cellar/tomcat/8.0.35/libexec/bin/catalina.sh run
Run Code Online (Sandbox Code Playgroud)

如果我从命令行在IntelliJ外部启动Tomcat,则会正确设置环境变量.

这是IntelliJ中的错误,还是我应该以其他方式设置环境变量?

(这是JetBrains的支持问题699091.)

ide tomcat intellij-idea environment-variables catalina

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