MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / scalarAttribute

Function scalarAttribute

tensorflow/go/attrs.go:184–246  ·  view source on GitHub ↗
(op *Operation, cname *C.char, meta C.TF_AttrMetadata)

Source from the content-addressed store, hash-verified

182}
183
184func scalarAttribute(op *Operation, cname *C.char, meta C.TF_AttrMetadata) (interface{}, error) {
185 status := newStatus()
186
187 switch meta._type {
188 case C.TF_ATTR_STRING:
189 if meta.total_size == 0 {
190 return "", nil
191 }
192 v := make([]C.char, meta.total_size)
193 C.TF_OperationGetAttrString(op.c, cname, unsafe.Pointer(&v[0]), C.size_t(meta.total_size), status.c)
194 if err := status.Err(); err != nil {
195 return nil, err
196 }
197 return C.GoStringN(&v[0], C.int(meta.total_size)), nil
198
199 case C.TF_ATTR_INT:
200 var v C.int64_t
201 C.TF_OperationGetAttrInt(op.c, cname, &v, status.c)
202 return int64(v), status.Err()
203
204 case C.TF_ATTR_FLOAT:
205 var v C.float
206 C.TF_OperationGetAttrFloat(op.c, cname, &v, status.c)
207 return float32(v), status.Err()
208
209 case C.TF_ATTR_BOOL:
210 var v C.uchar
211 C.TF_OperationGetAttrBool(op.c, cname, &v, status.c)
212 return v == 1, status.Err()
213
214 case C.TF_ATTR_TYPE:
215 var v C.TF_DataType
216 C.TF_OperationGetAttrType(op.c, cname, &v, status.c)
217 return DataType(v), status.Err()
218
219 case C.TF_ATTR_TENSOR:
220 var v *C.TF_Tensor
221 C.TF_OperationGetAttrTensor(op.c, cname, &v, status.c)
222 if err := status.Err(); err != nil {
223 return nil, err
224 }
225 return newTensorFromC(v), nil
226
227 case C.TF_ATTR_SHAPE:
228 numDims := meta.total_size
229 // If number of dims is unknown return empty shape to indicate that.
230 if numDims < 0 {
231 return Shape{}, nil
232 }
233 if numDims == 0 {
234 return ScalarShape(), nil
235 }
236 dims := make([]C.int64_t, numDims)
237 C.TF_OperationGetAttrShape(op.c, cname, (*C.int64_t)(unsafe.Pointer(&dims[0])), C.int(numDims), status.c)
238 if err := status.Err(); err != nil {
239 return nil, err
240 }
241 return makeCShape(dims), nil

Callers 1

AttrMethod · 0.85

Calls 8

newStatusFunction · 0.85
makeFunction · 0.85
int64Function · 0.85
newTensorFromCFunction · 0.85
makeCShapeFunction · 0.85
DataTypeTypeAlias · 0.70
ScalarShapeFunction · 0.70
ErrMethod · 0.45

Tested by

no test coverage detected