我希望使用tf.data.Dataset.from_generator来帮助我生成输入数据流。
@RunWith(SpringRunner.class)
@RestClientTest(PostClient.class)
public class PostClientMockTest {
// class under test
@Autowired
private PostClient postClient;
// autowired mock server from the spring context
@Autowired
private MockRestServiceServer mockRestServiceServer;
@Test
public void readPosts() throws Exception {
String mockJsonResponse = "My response";
mockRestServiceServer.expect(requestTo("https://myurl.com/posts?userId=1"))
.andRespond(withSuccess(mockJsonResponse, MediaType.APPLICATION_JSON_UTF8));
List<Post> posts = postClient.readPosts(1);
assertEquals(9, posts.size());
mockRestServiceServer.verify();
}
}
sample_generator函数可以生成具有建议形状的三个numpy数组。
上述部分没有问题。 但是,tf.data.Dataset.from_generator只能生成数据流,我需要将生成的数据馈送到网络。
代码如下:
dataset = tf.data.Dataset.from_generator(sample_generator,
output_types=(tf.float32, tf.float32, tf.float32),
output_shapes=(tf.TensorShape([size_image, size_image, 3]),tf.TensorShape([size_image,size_image,3]), tf.TensorShape([size_gt, size_gt])))
而迭代器是
dataset = dataset.map(transform_fn, num_parallel_calls=self.config['prefetch_threads']) # transform_fn just returns the input
dataset = dataset.prefetch(self.config['prefetch_capacity'])
dataset = dataset.repeat()
dataset = dataset.batch(self.config['batch_size'])
谢谢!
答案 0 :(得分:0)
问题已解决。 将from_generator更改为生成元数据,例如,即您所需文件的名称/路径。
然后,使用 tf.Py_func 以普通/ numpy方式预处理数据。 我只想说:“ tf.Pyfunc非常方便!” 谢谢!