我如何声明: new float[,][,] {???}

我不知道如何声明(为了自知):

var x = new float[,][,] {???};

我需要的是一个 2dArray of 2dArray of float...

float[float[,],float[,]];// orfloat[[,],[,]];

也许

new float[new float[,], new float[,]] {???};

我确定这是可能的...锯齿状与否...我需要一个解决方案...如果 VS 的 Intellisense 没有在下面给出红色下划线错误

new float[,][,]

那是告诉我这以某种方式存在...


我可以接受 Collection 替代方案:

new Tuple<float[,], float[,]>();

哦,对于你的好奇......我需要它来进行 LINQ.Zip() 操作......我想要返回一个值,就像我将 zip 压缩到 Python 风格一样,将两个 2dArray 放在一起......我试过这个:

var x = this.Biases.Zip(this.Weights, (b, w) => new Tuple(new List<float[,](b), new List<float[,](w)));

var x = this.Biases.Zip(this.Weights, (b, w) => new Tuple(new List<float[,](), new List<float[,]()) = new Tuple<float[,],float[,]>());

哪里this.Biases是 aList<float[,]>和相同的this.Weights

但这些尝试让我出错,因为 Cannot create an instance of the static class 'Tuple'

是的,它是关于 NN 的。我知道存在像 Accord.Net 这样的库,来自 Microsoft CNTK 或 TensorFlow 的新库,...命名!!!我是那种喜欢用我使用的语言做香草风格的人;尽可能少的外部库(鼓励我成为代码兄弟;))

我在这件事上成功了一步(C#):

this.Weights = this.Sizes.Take(this.Sizes.Count - 1).Zip(this.Sizes.Skip(1), (x, y) => new int[] {y, x}).Select(layer => NNGA.Math.Random.Rand2DArray(-2f, 2f, layer[0], layer[1])).ToList<float[,]>();

wherethis.Sizes = List<float[]>(); 并Math.Random.Rand2DArray(float x, float y, int dim1, int dim2);返回一个 2dArray 的 Random floatxy(自定义静态函数)之间的维度[dim1,dim2]。这给了我(Python)的确切信息:

self.weights = [np.random.randn(y, x) for x, y in zip(sizes[:-1], sizes[1:])]

wheresizes = []npasNumpy的 Python 库。

嘿伙计们,我正面临着“将 Python 转换为 C#”...“非类型化到类型化”语言;) 帮助!!!


蓝山帝景
浏览 360回答 1
1回答

狐的传说

直接说尺码...var&nbsp;x&nbsp;=&nbsp;new&nbsp;float[3,&nbsp;4][,];这为二维浮点数组提供了一个包含 12 个空格的网格。每个内部数组都可以是您喜欢的任何大小。
打开App,查看更多内容
随时随地看视频慕课网APP