in ngraph_bridge/ngraph_builder.cc [246:298]
static Status TensorDataToVector(const Tensor& tensor, std::vector<T>* vector) {
DataType dt = tensor.dtype();
// If dt and T match, we can just copy.
if (dt == DataTypeToEnum<T>::value) {
*vector = std::vector<T>(tensor.flat<T>().data(),
tensor.flat<T>().data() + tensor.NumElements());
}
// Else we have to convert.
else {
switch (dt) {
case DT_FLOAT:
ConvertTensorDataToVector<float, T>(tensor, vector);
break;
case DT_DOUBLE:
ConvertTensorDataToVector<double, T>(tensor, vector);
break;
case DT_INT8:
ConvertTensorDataToVector<int8, T>(tensor, vector);
break;
case DT_INT16:
ConvertTensorDataToVector<int16, T>(tensor, vector);
break;
case DT_INT32:
ConvertTensorDataToVector<int32, T>(tensor, vector);
break;
case DT_INT64:
ConvertTensorDataToVector<int64, T>(tensor, vector);
break;
case DT_UINT8:
ConvertTensorDataToVector<uint8, T>(tensor, vector);
break;
case DT_UINT16:
ConvertTensorDataToVector<uint16, T>(tensor, vector);
break;
case DT_UINT32:
ConvertTensorDataToVector<uint32, T>(tensor, vector);
break;
case DT_UINT64:
ConvertTensorDataToVector<uint64, T>(tensor, vector);
break;
case DT_BOOL:
ConvertTensorDataToVector<bool, T>(tensor, vector);
break;
default:
return errors::Internal("TensorDataToVector: tensor has element type ",
DataType_Name(dt), ", vector has type ",
DataType_Name(DataTypeToEnum<T>::value),
"; don't know how to convert");
}
}
return Status::OK();
}