tfdeploy 0.0.10

Tiny, no-nonsense, self contained, TensorFlow inference
Documentation
#[macro_use]
extern crate criterion;
extern crate ndarray;
#[macro_use]
extern crate tfdeploy;

use criterion::Criterion;

use tfdeploy::ops::nn::conv2d::*;
use tfdeploy::ops::nn::local_patch::*;
use tfdeploy::*;

use tfdeploy::ops::Op;

fn mk(sizes: &[usize]) -> Tensor {
    let data = ::ndarray::Array::range(1f32, sizes.iter().product::<usize>() as f32 + 1.0, 1.0)
        .into_shape(sizes)
        .unwrap();
    Tensor::F32(data)
}

fn conv(bencher: &mut Criterion) {
    let stride = 1;
    let conv = Conv2D::<f32>::new(LocalPatch::valid(stride, stride));
    let inputs = tvec![mk(&[1, 82, 1, 40]).into(), mk(&[41, 1, 40, 128]).into()];
    conv.eval(inputs.clone()).unwrap();
    bencher.bench_function("Conv2D<f32>(1x82x1x40 41x1x40x128)", move |b| {
        b.iter(|| conv.eval(inputs.clone()).unwrap())
    });
}

criterion_group!(benches, conv);
criterion_main!(benches);