我目前正在尝试优化我的Python程序并开始使用Cython以减少函数调用开销,并且可能稍后包括优化的C库函数.
所以我遇到了第一个问题:
我在我的代码中使用组合来创建一个更大的类.到目前为止,我已经将我的一个Python类转换为Cython(这很难).这是代码:
import numpy as np
cimport numpy as np
ctypedef np.float64_t dtype_t
ctypedef np.complex128_t cplxtype_t
ctypedef Py_ssize_t index_t
cdef class bendingForcesClass(object):
cdef dtype_t bendingRigidity
cdef np.ndarray matrixPrefactor
cdef np.ndarray bendingForces
def __init__(self, dtype_t bendingRigidity, np.ndarray[dtype_t, ndim=2] waveNumbersNorm):
self.bendingRigidity = bendingRigidity
self.matrixPrefactor = -self.bendingRigidity * waveNumbersNorm ** 2
cpdef np.ndarray calculate(self, np.ndarray membraneHeight):
cdef np.ndarray bendingForces
bendingForces = self.matrixPrefactor * membraneHeight
return bendingForces
Run Code Online (Sandbox Code Playgroud)
从我编写的Python/Cython类中,我调用了类方法calculate,因此在我的编写类中,我有以下(简化)代码:
from bendingForcesClass import bendingForcesClass
cdef class membraneClass(object):
def __init__(self, systemSideLength, lowerCutoffLength, bendingRigidity):
self.bendingForces …Run Code Online (Sandbox Code Playgroud) 更新1:
再次仔细查看输出后,我有点明白了。通过在右括号和引号之间添加尾随空格,它可以工作:
powershell -ExecutionPolicy ByPass -File "$(SolutionDir)\BuildScripts\InjectGitVersion.ps1" "$(ProjectDir) " "$(TargetDir) "
Run Code Online (Sandbox Code Playgroud)
我怀疑 PowerShell 以某种方式解释了)".
有没有更优雅的方法来解决这个问题?
更新2:
这很奇怪。我有另一个脚本可以进行清理并在)和之间没有空格的情况下工作",如下所示:
powershell -ExecutionPolicy ByPass -File "$(SolutionDir)\BuildScripts\InjectGitVersionCleanup.ps1" "$(ProjectDir)"
Run Code Online (Sandbox Code Playgroud)
但是添加尾随空格将导致它失败,因为它在内部将文件名附加到路径,因此路径将不正确。
如果有人理解这一点,我很乐意接受该解释作为正确答案!
原来的:
我在 VisualStudio 中有以下预构建命令,我想用它从 Git 标签注入版本:
powershell -ExecutionPolicy ByPass -File "$(SolutionDir)\BuildScripts\InjectGitVersion.ps1" $(ProjectDir) $(TargetDir)
Run Code Online (Sandbox Code Playgroud)
如果路径 $(SolutionDir) 不包含空格(该路径也将出现在 $(ProjectDir) 或 $(TargetDir) 中),则此方法可以正常工作。
当路径 $(SolutionDir) 确实包含空格时,脚本似乎按预期启动,但参数未正确传递,我无法弄清楚如何在 PS 脚本的参数中转义它们。
我尝试添加 sing "、三重 """ 以及 ',这给出了以下内容(每个 PS 命令尝试不同的方法来转义空格):
powershell -ExecutionPolicy ByPass -File "$(SolutionDir)\BuildScripts\InjectGitVersion.ps1" $(ProjectDir) $(TargetDir)
Run Code Online (Sandbox Code Playgroud)
参数[0]:
D:\VisualStudio
参数[1]:
项目\software_git_repo\ProgramEditor\
powershell -ExecutionPolicy ByPass -File …Run Code Online (Sandbox Code Playgroud) 我最近在我的代码中遇到了以下错误,这使我无法进行调试.我想基于它的接口注入一个实例,如下所示:
MovementController(IMotorController motorController)
Run Code Online (Sandbox Code Playgroud)
但是我不小心使用了这样的具体类型:
MovementController(MotorController motorController)
Run Code Online (Sandbox Code Playgroud)
该项目仍然构建并运行良好,直到我尝试motorController从MovementController实例访问.由于IMotorController访问硬件的底层实现,它必须是单例或我的锁代码.但是,由于我有其他类注入IMotorController,我现在MotorController在对象图中有两个实例,它们都通过串行连接访问硬件.这导致错误,在运行时处于更低的水平,这让我永远调试并找到真正的原因.
如何避免这种类型的错误或为我的StructureMap注册表编写单元测试以捕获这个微妙的错误?
我试图让这个示例在 Java 中导入 TensorFlow 来运行: https: //github.com/deeplearning4j/tf-import
经过一些修改后,我成功地使Mnist.java中的 Java 导入能够工作。但是,我无法让 mnist_jumpy.py工作,以便在 Python 的 DeepLearning4J 中使用该模型。我通过以下修改运行它,但在加载模型时出现此异常:
log4j:WARN No appenders could be found for logger (org.nd4j.linalg.factory.Nd4jBackend).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.rits.cloning.Cloner (file:/home/micha/.deeplearning4j/pydl4j/pydl4j-1.0.0-SNAPSHOT-cpu-core-datavec-spark2-2.11/pydl4j-1.0.0-SNAPSHOT-bin.jar) to field java.util.TreeSet.m
WARNING: Please consider reporting this to the maintainers of com.rits.cloning.Cloner
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试优化我用纯Python编写的代码.此代码使用NumPy的很沉重,因为我与NumPy的阵列工作.下面你可以看到我转换为Cython的最简单的类.这只是两个Numpy数组的乘法.这里:
bendingForces = self.matrixPrefactor * membraneHeight
Run Code Online (Sandbox Code Playgroud)
我的问题是,我是否以及如何优化它,当我看到"cython -a"生成的C代码有很多NumPy调用时,这看起来效率不高.
import numpy as np
cimport numpy as np
ctypedef np.float64_t dtype_t
ctypedef np.complex128_t cplxtype_t
ctypedef Py_ssize_t index_t
cdef class bendingForcesClass( object ):
cdef dtype_t bendingRigidity
cdef np.ndarray matrixPrefactor
cdef np.ndarray bendingForces
def __init__( self, dtype_t bendingRigidity, np.ndarray[dtype_t, ndim=2] waveNumbersNorm ):
self.bendingRigidity = bendingRigidity
self.matrixPrefactor = -self.bendingRigidity * waveNumbersNorm**2
cpdef np.ndarray calculate( self, np.ndarray membraneHeight ) :
cdef np.ndarray bendingForces
bendingForces = self.matrixPrefactor * membraneHeight
return bendingForces
Run Code Online (Sandbox Code Playgroud)
我的想法是使用两个for …
我昨天合并了两个分支。在合并期间,我不小心隐藏了一些更改,同时解决了合并冲突。
我刚刚意识到现在 Git/SourceTree 现在没有将合并提交显示为合并,因为它没有指向合并提交的图形链接/行。
我不确定这是怎么发生的,是否是由于上面提到的隐藏或代表我的一些其他错误。
由于合并,我已经付出了一些努力来修复构建错误等,所以我不想重新启动。
所以我的问题是:有没有办法解决这个问题?!
我有以下代码使用cvThreshold和检测图像中的轮廓cvFindContours:
CvMemStorage* storage = cvCreateMemStorage(0);
CvSeq* contours = 0;
cvThreshold( processedImage, processedImage, thresh1, 255, CV_THRESH_BINARY );
nContours = cvFindContours(processedImage, storage, &contours, sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE, cvPoint(0,0) );
Run Code Online (Sandbox Code Playgroud)
我想以某种方式扩展此代码,以过滤/忽略/删除任何接触图像边界的轮廓。但是我不确定如何去做。我应该过滤阈值图像还是之后过滤轮廓?希望有人知道一个优雅的解决方案,因为令人惊讶的是我无法通过谷歌搜索提出一个解决方案。
我正在构建一个用户控件,它在 2x2 网格中有 4 个 Canvas。当我将网格的背景设置为某种颜色时,画布周围的颜色会发生变化,但画布的背景保持白色。
如何才能使画布组的背景透明并且可以看到网格的背景?我在这里找到了一些解释,但没有代码,我不明白如何让它工作。
编辑:这是 XAML 代码。正如您所看到的,我尝试<Canvas IsItemsHost="True" Background="{x:Null}"/>在代码中设置最后一个列表框的画布,但这不起作用。设置Background="Transparent"也不起作用。
<UserControl x:Class="ProgramEditor.objectPresenter.objectPresenter"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:objectPresenter="clr-namespace:ProgramEditor.objectPresenter"
xmlns:behavior="clr-namespace:RubberBand;assembly=RubberBand"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras"
d:DataContext="{d:DesignInstance objectPresenter:objectViewModel, IsDesignTimeCreatable=True}"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="700">
<UserControl.Resources>
<sys:Double x:Key="objectWidth">610</sys:Double>
<sys:Double x:Key="objectHeight">365</sys:Double>
<objectPresenter:HorizontalValueConverter x:Key="horizontalValueConverter" />
<objectPresenter:VerticalValueConverter x:Key="verticalValueConverter" />
<Style x:Key="RowColumnSelector" TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected}" Value="True">
<Setter Property="Foreground" Value="Black"/>
<Setter Property="FontWeight" Value="Bold"/>
</DataTrigger>
</Style.Triggers>
<Setter Property="Cursor" Value="Hand"/>
</Style>
<DataTemplate DataType="{x:Type objectPresenter:TargetSelector}">
<TextBlock Width="{Binding HorizontalSize, Converter={StaticResource horizontalValueConverter}, ConverterParameter={StaticResource objectWidth}}"
Height="{Binding VerticalSize, Converter={StaticResource …Run Code Online (Sandbox Code Playgroud) python ×3
cython ×2
background ×1
c# ×1
c++ ×1
canvas ×1
class ×1
composition ×1
git ×1
java ×1
merge ×1
methods ×1
numpy ×1
opencv ×1
optimization ×1
powershell ×1
pyjnius ×1
structuremap ×1
tensorflow ×1
unit-testing ×1
wpf ×1
xaml ×1