extern crate leaf;
extern crate phloem;
#[cfg(test)]
mod layer_spec {
use leaf::layer::*;
use phloem::Blob;
fn new_layer_config() -> LayerConfig {
LayerConfig::new("foo".to_owned(), LayerType::Sigmoid)
}
#[test]
fn new_layer() {
let cfg = new_layer_config();
Layer::from_config(&cfg);
}
#[test]
fn dim_check_strict() {
let cfg = WeightConfig { share_mode: DimCheckMode::Strict, ..WeightConfig::default() };
let blob_one = Blob::<f32>::of_shape(vec![2, 3, 3]);
let blob_two = Blob::<f32>::of_shape(vec![3, 2, 3]);
let param_name = "foo".to_owned();
let owner_name = "owner".to_owned();
let layer_name = "layer".to_owned();
assert!(cfg.check_dimensions(&blob_one,
&blob_one,
param_name.clone(),
owner_name.clone(),
layer_name.clone())
.is_ok());
assert!(cfg.check_dimensions(&blob_one,
&blob_two,
param_name.clone(),
owner_name.clone(),
layer_name.clone())
.is_err());
}
#[test]
fn dim_check_permissive() {
let cfg = WeightConfig { share_mode: DimCheckMode::Permissive, ..WeightConfig::default() };
let blob_one = Blob::<f32>::of_shape(vec![2, 3, 3]);
let blob_two = Blob::<f32>::of_shape(vec![3, 2, 3]);
let blob_three = Blob::<f32>::of_shape(vec![3, 10, 3]);
let param_name = "foo".to_owned();
let owner_name = "owner".to_owned();
let layer_name = "layer".to_owned();
assert!(cfg.check_dimensions(&blob_one,
&blob_one,
param_name.clone(),
owner_name.clone(),
layer_name.clone())
.is_ok());
assert!(cfg.check_dimensions(&blob_one,
&blob_two,
param_name.clone(),
owner_name.clone(),
layer_name.clone())
.is_ok());
assert!(cfg.check_dimensions(&blob_one,
&blob_three,
param_name.clone(),
owner_name.clone(),
layer_name.clone())
.is_err());
assert!(cfg.check_dimensions(&blob_two,
&blob_three,
param_name.clone(),
owner_name.clone(),
layer_name.clone())
.is_err());
}
}