unsupervised_transformed_input_data_reader::unsupervised_transformed_input_data_reader(
		unsupervised_data_reader_smart_ptr original_reader,
		data_transformer_smart_ptr transformer)
		: original_reader(original_reader)
		, transformer(transformer)
		, local_input_ptr(0)
		, transformer_sample_count(transformer->get_sample_count())
		, current_sample_id(0)
	{
		if (!transformer->is_in_place())
		{
			buf.resize(neuron_data_type::get_input_size(transformer->get_transformed_data_type(original_reader->get_input_type()))
				* original_reader->get_input_configuration().get_neuron_count());
			local_input_ptr = &(*buf.begin());
		}
	}
	supervised_transformed_input_data_reader::supervised_transformed_input_data_reader(
		supervised_data_reader_smart_ptr original_reader,
		data_transformer_smart_ptr transformer)
		: original_reader(original_reader)
		, transformer(transformer)
		, local_input_ptr(0)
		, local_output_ptr(0)
		, transformer_sample_count(transformer->get_sample_count())
		, current_sample_id(0)
	{
		if (!transformer->is_in_place())
		{
			input_buf.resize(original_reader->get_input_neuron_elem_size() * original_reader->get_input_configuration().get_neuron_count());
			local_input_ptr = &(*input_buf.begin());
		}
		if (transformer_sample_count > 1)
		{
			output_buf_size = original_reader->get_output_configuration().get_neuron_count() * sizeof(float);
			output_buf.resize(original_reader->get_output_configuration().get_neuron_count());
			local_output_ptr = &(*output_buf.begin());
		}
	}