小编Dan*_*ler的帖子

获取运行Windows窗体控件的应用程序

我正在制作一个Autocad Plugin运行良好的使用Windows Forms 而且我创建了一个user control (winforms)以我喜欢的任何形式复制.

问题是

从控件的代码中,我如何获得运行该控件的应用程序实例?

(可能是纯粹的winforms问题)

Coditions:

在插件中,我可以毫无问题地获得Autocad Application实例.

此用户控件意味着要在separate assembly (dll)插件应用程序中引用,因此它无法直接访问应用程序实例.


关于场景的一点解释:

有一个Main Assembly由Autocad作为插件运行.该程序集实例化了Autocad应用程序.

现在我有一些有用的表单控件来使用Autocad,它们在一个separate assembly.(那是因为我想在我喜欢的许多不同的插件中使用它们).

因此,Autocad运行main assemblymain assembly运行控件separate assembly.

为了正常工作,这些控件需要访问正在运行的Autocad应用程序main assembly.

今天我使用应用程序作为控件中的属性,我必须在使用它们之前设置它.(如果我忘记设置,则会引发异常).因为我无法控制创建者参加参赛者.

我希望控件检测其正在运行的应用程序,以便我避免这种解决方法.

c# winforms autocad-plugin

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

如何在 C# 中缩短路径并保持其有效

我工作的地方,目录的名字很长,而且目录树也很长。

而且我遇到了外部应用程序中文件夹路径名太长的问题(我无法更改此外部应用程序,但我可以给它缩短的路径名)。

我知道微软操作系统可以缩短路径名,例如将C:\TooLongName\TooLongSubDirectory其转换为C:\TooLon~1\TooLon~1.

但是我怎样才能在 C# 中做到这一点并且仍然保持中殿有效和可用呢?

PS:我没有使用标准FileInfoDirectoryInfo类,我仅使用将发送到我无法以任何方式更改的外部应用程序的字符串。

c# windows path pathtoolongexception

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

为什么我的 LSTM 模型重复以前的值?

我在 Keras 中构建了一个简单的 LSTM 模型,如下所示:

model = Sequential()
model.add(keras.layers.LSTM(hidden_nodes, input_dim=num_features, input_length=window, consume_less="mem"))
model.add(keras.layers.Dense(num_features, activation='sigmoid'))
optimizer = keras.optimizers.SGD(lr=learning_rate, decay=1e-6, momentum=0.9, nesterov=True)
Run Code Online (Sandbox Code Playgroud)

当我将模型应用于某些数据时,我有这种特殊的行为: 在此处输入图片说明

其中橙色线代表预测值,蓝色线代表大真相。

如您所见,网络重复了以前的值,但这不是我想要的。我有几个功能(不仅是图片中显示的功能),我希望网络考虑与其他时间序列的依赖关系,而不是只查看单个过去的数据并重复以前的数据。

我希望问题足够清楚!

我的数据
有 36 个时间序列(分类和数字数据)。我使用了一个长度为 W 的窗口,并重新整理了数据,以便以 Keras (num_samples, window, num_features) 中所需的形式创建一个 numpy 向量。

编辑 1
个数据样本:

0.5, 0.1, 0.4, 1, 0,74
0.1, 0.1, 0.8, 0.9, 0,8
0.2, 0.3, 0.5, 1, 0,85
Run Code Online (Sandbox Code Playgroud)

我有一个分类属性和两个数字属性。前三行指的是分类行(分类的one-hot编码)。最后两个是指两个数字属性。

我构建训练和测试,如下所示: 在此处输入图片说明

所以我执行model.fit(T, X).

我也尝试过使用少量隐藏节点,但结果是一样的。

编辑 2
考虑使用数值和分类特征的自定义损失函数:

def mixed_num_cat_loss_backend(y_true, y_pred, signals_splits):
    if isinstance(y_true, np.ndarray):
        y_true = keras.backend.variable( y_true )
    if isinstance(y_pred, np.ndarray): …
Run Code Online (Sandbox Code Playgroud)

time-series lstm keras anomaly-detection

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

为什么使用“Delegate.CreateDelegate”创建委托比 lambda 和方法委托更快?

一直以来我一直在阅读有关反射的内容,每个人都在说:“反射很慢”,“反射很慢”。

现在我决定测试有多慢,令我惊讶的是,使用反射创建的委托实际上大约是使用 lambda 创建的委托的两倍,而且令人惊讶的是,比采用声明方法的委托快大约四倍。

查看代码

这是一个自定义类,其属性 get 方法将在委托中使用:

#class to test
class SomeClass
{
    public SomeClass A { get; set; } //property to be gotten
    public static SomeClass GetA(SomeClass c) { return c.A; } //declared getter method
}
Run Code Online (Sandbox Code Playgroud)

这是我测试的三名代表:

PropertyInfo AProp = typeof(SomeClass).GetProperty("A");

//1 - Created with reflection
Func<SomeClass, SomeClass> Getter = (Func<SomeClass, SomeClass>)Delegate.CreateDelegate(typeof(Func<SomeClass, SomeClass>), null, AProp.GetGetMethod());

//2 - Created with a lambda expression
Func<SomeClass, SomeClass> Getter2 = c => c.A;

//3 - Created from a declared method
Func<SomeClass, SomeClass> …
Run Code Online (Sandbox Code Playgroud)

c# reflection performance lambda delegates

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

torch.Tensor.add_ 发生了什么?

我正在研究 PyTorch 的 SGD 实现:https://pytorch.org/docs/stable/_modules/torch/optim/sgd.html#SGD

我看到一些我不明白的奇怪计算。

例如,看一下p.data.add_(-group['lr'], d_p). 认为两个参数相乘是有道理的,对吗?(这就是 SGD 的工作原理,-lr * grads

但该函数的文档对此没有任何说明。

更令人困惑的是,虽然这个 SGD 代码实际上可以工作(我通过复制代码并调用下面的 prints 进行测试)add_,但我不能add_像它那样简单地使用两个参数:

#this returns an error about using too many arguments 
import torch

a = torch.tensor([1,2,3])
b = torch.tensor([6,10,15])
c = torch.tensor([100,100,100])
a.add_(b, c)
print(a)
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?我缺少什么?

pytorch

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

tf.keras.losses.categorical_crossentropy 返回数组还是单个值?

我正在使用自定义训练循环。返回的损失tf.keras.losses.categorical_crossentropy是我假设的数组(1,batch_size)。这是它应该返回的值还是单个值?

在后一种情况下,知道我可能做错了什么吗?

python keras tensorflow loss-function

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

Autocad .NET - 扩展命令行

我正在开发一个 Autocad .NET 插件(.dll通过加载NETLOAD),我使用了很多Document.Editor对象来获取用户输入,比如字符串、数字、点和实体。

我希望我的一些提示显示几个选项供用户选择(与本机-DWGUNITS命令完全一样)。

显示提示和选项非常好(我使用的是Editor.GetInteger,传递带有选项的多行消息,有时还有一两个关键字)。

但我无法弄清楚如何展开命令栏以使其显示所有选项(否则用户必须手动展开它才能查看列表)

所以,这是我目前的命令(蓝色的私人内容):

选项仅限于这三行(更改CLIPROMPTLINES似乎不是最好的选择,但如果您知道如何使用.NET,这是一个好的开始)。
这张图片代表我的命令

.

这就是我想要的:

此图像显示了预期的行为

.net c# vb.net autocad autocad-plugin

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

将 google 脚本项目从电子表格复制到另一个

我见过很多关于如何使用脚本将工作表复制到 Google 电子表格中的另一个电子表格的答案,例如此 copyTo 方法

但现在我有一个包含许多选项卡的大型电子表格,并且我创建了它的新版本,并在绑定脚本中进行了更新。这张新表中的数据是测试数据。这就是我所拥有的:

  • 旧的电子表格文件(一致的数据) /旧的脚本项目(已过时)
  • 新电子表格(测试数据)/新脚本项目(当前)

然后我需要将新的脚本项目复制到旧的电子表格(具有一致的数据)。

我知道我可以努力复制每张纸,但这实际上不是这里的问题(除了命名范围也会造成很多麻烦)。问题是如何将脚本项目复制到另一个电子表格。

google-sheets google-apps-script

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

Keras 回调实例没有属性“set_model”

我正在尝试使用 keras 的回调功能记录 Keras 中使用的每个时代的状态。这是回调类的示例代码

class TimingCallback():
    def __init__(self):
        self.logs=[]
    def on_epoch_begin(epoch, logs={}):
        self.starttime=time()
    def on_epoch_end(epoch, logs={}):
        self.logs.append(time()-self.starttime)
Run Code Online (Sandbox Code Playgroud)

这是我的模特合身。

cb = TimingCallback()
model.fit(X, Y, epochs=150, batch_size=10, callbacks=[cb])
Run Code Online (Sandbox Code Playgroud)

执行时出现以下错误。

错误:

AttributeError: TimingCallback 实例没有属性“set_model”

谁能帮我弄清楚为什么会发生这种情况?

python callback keras

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

Keras:自定义损失函数,训练数据与模型不直接相关

我正在尝试将用 tensorflow 层编写的 CNN 转换为在 tensorflow 中使用 keras api(我使用的是 TF 1.x 提供的 keras api),并且在编写自定义损失函数以训练模型时遇到问题。

根据本指南,在定义损失函数时,它需要参数(y_true, y_pred) https://www.tensorflow.org/guide/keras/train_and_evaluate#custom_losses

def basic_loss_function(y_true, y_pred):
    return ...
Run Code Online (Sandbox Code Playgroud)

然而,在我见过的每个例子中,y_true都以某种方式与模型直接相关(在简单的情况下,它是网络的输出)。在我的问题中,情况并非如此。如果我的损失函数依赖于一些与模型张量无关的训练数据,如何实现这一点?

具体来说,这是我的问题:

我正在尝试学习在成对图像上训练的图像嵌入。我的训练数据包括图像对和图像对之间匹配点的注释(图像坐标)。输入特征只是图像对,网络以连体配置进行训练。

我能够用张量流层成功地实现这一点,并用张量流估计器成功地训练它。我当前的实现从一个大型 tf 记录数据库构建了一个 tf 数据集,其中的特征是一个包含图像和匹配点数组的字典。在我可以轻松地将这些图像坐标数组提供给损失函数之前,但目前尚不清楚如何执行此操作。

keras tensorflow tf.keras

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