Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python CNTK:从numpy阵列创建用于多GPU培训的MinibatchSource_Python_Numpy_Deep Learning_Cntk - Fatal编程技术网

Python CNTK:从numpy阵列创建用于多GPU培训的MinibatchSource

Python CNTK:从numpy阵列创建用于多GPU培训的MinibatchSource,python,numpy,deep-learning,cntk,Python,Numpy,Deep Learning,Cntk,我在numpy阵列中有我的预处理图像数据,我的脚本可以通过一个GPU正常工作。据我所知,我们需要创建多个GPU培训。我正在为分布式培训检查这个示例(),但是它使用了*\u map.txt,这基本上是一个指向图像文件(例如png)的路径列表。我想知道最好的方法是从numpy数组创建MinibatchSource,而不是将numpy数组转换回png文件。您可以创建复合读取器,将多个图像反序列化器组合到一个源中。首先,需要创建两个贴图文件(带有虚拟标签)。一个包含所有输入图像,另一个包含相应的目标图像

我在numpy阵列中有我的预处理图像数据,我的脚本可以通过一个GPU正常工作。据我所知,我们需要创建多个GPU培训。我正在为分布式培训检查这个示例(),但是它使用了
*\u map.txt
,这基本上是一个指向图像文件(例如png)的路径列表。我想知道最好的方法是从numpy数组创建MinibatchSource,而不是将numpy数组转换回png文件。

您可以创建复合读取器,将多个图像反序列化器组合到一个源中。首先,需要创建两个贴图文件(带有虚拟标签)。一个包含所有输入图像,另一个包含相应的目标图像。假设文件名为
map1.txt
map2.txt

import numpy as np
import cntk as C
import cntk.io.transforms as xforms 
import sys

def create_reader(map_file1, map_file2):
    transforms = [xforms.scale(width=224, height=224, channels=3, interpolations='linear')]
    source1 = C.io.ImageDeserializer(map_file1, C.io.StreamDefs(
        source_image = C.io.StreamDef(field='image', transforms=transforms)))
    source2 = C.io.ImageDeserializer(map_file2, C.io.StreamDefs(
        target_image = C.io.StreamDef(field='image', transforms=transforms)))
    return C.io.MinibatchSource([source1, source2], max_samples=sys.maxsize, randomize=True)

x = C.input_variable((3,224,224))
y = C.input_variable((3,224,224))
# world's simplest model
model = C.layers.Convolution((3,3),3, pad=True)
z = model(x)
loss = C.squared_error(z, y)

reader = create_reader("map1.txt", "map2.txt")
trainer = C.Trainer(z, loss, C.sgd(z.parameters, C.learning_rate_schedule(.00001, C.UnitType.minibatch)))

minibatch_size = 2

input_map={
    x: reader.streams.source_image,
    y: reader.streams.target_image
}

for i in range(30):
    data=reader.next_minibatch(minibatch_size, input_map=input_map)
    print(data)
    trainer.train_minibatch(data)
听起来像是用于图像,但它要求目标变量是标量(类似于类标签)。但是,我的目标变量具有类似图像的形状。