我正在制作一个Autocad Plugin运行良好的使用Windows Forms
而且我创建了一个user control (winforms)以我喜欢的任何形式复制.
问题是
从控件的代码中,我如何获得运行该控件的应用程序实例?
(可能是纯粹的winforms问题)
Coditions:
在插件中,我可以毫无问题地获得Autocad Application实例.
此用户控件意味着要在separate assembly (dll)插件应用程序中引用,因此它无法直接访问应用程序实例.
关于场景的一点解释:
有一个Main Assembly由Autocad作为插件运行.该程序集实例化了Autocad应用程序.
现在我有一些有用的表单控件来使用Autocad,它们在一个separate assembly.(那是因为我想在我喜欢的许多不同的插件中使用它们).
因此,Autocad运行main assembly并main assembly运行控件separate assembly.
为了正常工作,这些控件需要访问正在运行的Autocad应用程序main assembly.
今天我使用应用程序作为控件中的属性,我必须在使用它们之前设置它.(如果我忘记设置,则会引发异常).因为我无法控制创建者参加参赛者.
我希望控件检测其正在运行的应用程序,以便我避免这种解决方法.
我工作的地方,目录的名字很长,而且目录树也很长。
而且我遇到了外部应用程序中文件夹路径名太长的问题(我无法更改此外部应用程序,但我可以给它缩短的路径名)。
我知道微软操作系统可以缩短路径名,例如将C:\TooLongName\TooLongSubDirectory其转换为C:\TooLon~1\TooLon~1.
但是我怎样才能在 C# 中做到这一点并且仍然保持中殿有效和可用呢?
PS:我没有使用标准FileInfo和DirectoryInfo类,我仅使用将发送到我无法以任何方式更改的外部应用程序的字符串。
我在 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) 一直以来我一直在阅读有关反射的内容,每个人都在说:“反射很慢”,“反射很慢”。
现在我决定测试有多慢,令我惊讶的是,使用反射创建的委托实际上大约是使用 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) 我正在研究 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)
这里发生了什么?我缺少什么?
我正在使用自定义训练循环。返回的损失tf.keras.losses.categorical_crossentropy是我假设的数组(1,batch_size)。这是它应该返回的值还是单个值?
在后一种情况下,知道我可能做错了什么吗?
我正在开发一个 Autocad .NET 插件(.dll通过加载NETLOAD),我使用了很多Document.Editor对象来获取用户输入,比如字符串、数字、点和实体。
我希望我的一些提示显示几个选项供用户选择(与本机-DWGUNITS命令完全一样)。
显示提示和选项非常好(我使用的是Editor.GetInteger,传递带有选项的多行消息,有时还有一两个关键字)。
但我无法弄清楚如何展开命令栏以使其显示所有选项(否则用户必须手动展开它才能查看列表)
所以,这是我目前的命令(蓝色的私人内容):
选项仅限于这三行(更改CLIPROMPTLINES似乎不是最好的选择,但如果您知道如何使用.NET,这是一个好的开始)。

.
这就是我想要的:
我见过很多关于如何使用脚本将工作表复制到 Google 电子表格中的另一个电子表格的答案,例如此 copyTo 方法。
但现在我有一个包含许多选项卡的大型电子表格,并且我创建了它的新版本,并在绑定脚本中进行了更新。这张新表中的数据是测试数据。这就是我所拥有的:
然后我需要将新的脚本项目复制到旧的电子表格(具有一致的数据)。
我知道我可以努力复制每张纸,但这实际上不是这里的问题(除了命名范围也会造成很多麻烦)。问题是如何将脚本项目复制到另一个电子表格。
我正在尝试使用 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”
谁能帮我弄清楚为什么会发生这种情况?
我正在尝试将用 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 数据集,其中的特征是一个包含图像和匹配点数组的字典。在我可以轻松地将这些图像坐标数组提供给损失函数之前,但目前尚不清楚如何执行此操作。
c# ×4
keras ×4
python ×2
tensorflow ×2
.net ×1
autocad ×1
callback ×1
delegates ×1
lambda ×1
lstm ×1
path ×1
performance ×1
pytorch ×1
reflection ×1
tf.keras ×1
time-series ×1
vb.net ×1
windows ×1
winforms ×1