Esempio n. 1
0
File: blob.hpp Progetto: gnina/caffe
 /**
  * @brief Returns the 'canonical' version of a (usually) user-specified axis,
  *        allowing for negative indexing (e.g., -1 for the last axis).
  *
  * @param axis_index the axis index.
  *        If 0 <= index < num_axes(), return index.
  *        If -num_axes <= index <= -1, return (num_axes() - (-index)),
  *        e.g., the last axis index (num_axes() - 1) if index == -1,
  *        the second to last if index == -2, etc.
  *        Dies on out of range index.
  */
 inline int CanonicalAxisIndex(int axis_index) const {
   CHECK_GE(axis_index, -num_axes())
       << "axis " << axis_index << " out of range for " << num_axes()
       << "-D Blob with shape " << shape_string();
   CHECK_LT(axis_index, num_axes())
       << "axis " << axis_index << " out of range for " << num_axes()
       << "-D Blob with shape " << shape_string();
   if (axis_index < 0) {
     return axis_index + num_axes();
   }
   return axis_index;
 }
Esempio n. 2
0
void check_shape(void)
{
    if (global_shape != current_shape) {
	fprintf(output_file, "\\psset{dotstyle=%s}\n",
		shape_string(global_shape));
	current_shape = global_shape;
    }
    if (local_shape != current_shape) {
	dotstyle = shape_string(local_shape);
	nargs++;
    } 
}
Esempio n. 3
0
 /**
  * @brief Returns the 'canonical' version of a (usually) user-specified axis,
  *        allowing for negative indexing (e.g., -1 for the last axis).
  *
  * @param index the axis index.
  *        If 0 <= index < num_axes(), return index.
  *        If -num_axes <= index <= -1, return (num_axes() - (-index)),
  *        e.g., the last axis index (num_axes() - 1) if index == -1,
  *        the second to last if index == -2, etc.
  *        Dies on out of range index.
  */
 inline int CanonicalAxisIndex(int axis_index) const {
   ASSERT(axis_index >= -num_axes(),
       "axis " << axis_index << " out of range for " << num_axes()
       << "-D Blob with shape " << shape_string());
   ASSERT(axis_index < num_axes(),
       "axis " << axis_index << " out of range for " << num_axes()
       << "-D Blob with shape " << shape_string());
   if (axis_index < 0) {
     return axis_index + num_axes();
   }
   return axis_index;
 }
void Blob<Dtype>::CopyFrom(const Blob& source, bool copy_diff, bool reshape) {
  if (source.count() != count_ || source.shape() != shape_) {
    if (reshape) {
      ReshapeLike(source);
    } else {
      LOG(FATAL) << "Trying to copy blobs of different shapes (my shape = "
          << shape_string() << "; source shape = "
          << source.shape_string() << ")";
    }
  }
  switch (Caffe::mode()) {
  case Caffe::GPU:
    if (copy_diff) {
      caffe_copy(count_, source.gpu_diff(),
          static_cast<Dtype*>(diff_->mutable_gpu_data()));
    } else {
      caffe_copy(count_, source.gpu_data(),
          static_cast<Dtype*>(data_->mutable_gpu_data()));
    }
    break;
  case Caffe::CPU:
    if (copy_diff) {
      caffe_copy(count_, source.cpu_diff(),
          static_cast<Dtype*>(diff_->mutable_cpu_data()));
    } else {
      caffe_copy(count_, source.cpu_data(),
          static_cast<Dtype*>(data_->mutable_cpu_data()));
    }
    break;
  default:
    LOG(FATAL) << "Unknown caffe mode.";
  }
}