@Override public String getInputFromNode(NodeDef node, int index) { return node.getInput(index); }
protected boolean hasReductionIndices(NodeDef nodeDef) { for(int i = 0; i < nodeDef.getInputCount(); i++) { if(nodeDef.getInput(i).contains("reduction_indices")) { return true; } } return false; }
@Override public void initFromTensorFlow(NodeDef nodeDef, SameDiff initWith, Map<String, AttrValue> attributesForNode, GraphDef graph) { val weightsName = nodeDef.getInput(1); val variable = initWith.getVariable(weightsName); val tmp = initWith.getArrForVarName(weightsName); // if second argument is scalar - we should provide array of same shape if (tmp != null) { if (tmp.isScalar()) { this.pow = tmp.getDouble(0); } } }
@Override public void initFromTensorFlow(NodeDef nodeDef, SameDiff initWith, Map<String, AttrValue> attributesForNode, GraphDef graph) { val lastNode = TFGraphMapper.getInstance().getNodeWithNameFromGraph(graph,nodeDef.getInput(nodeDef.getInputCount() - 1)); val arr = TFGraphMapper.getInstance().getNDArrayFromTensor("value",lastNode,graph); if(arr != null) { this.axis = arr.data().asInt(); addArguments(); } }
@Override public void initFromTensorFlow(NodeDef nodeDef, SameDiff initWith, Map<String, AttrValue> attributesForNode, GraphDef graph) { val numSplits = (int) attributesForNode.get("num_split").getI(); this.numSplit = numSplits; addIArgument(numSplits); val splitDim = TFGraphMapper.getInstance().getArrayFrom(TFGraphMapper.getInstance().getNodeWithNameFromGraph(graph,nodeDef.getInput(0)),graph); if(splitDim != null) { this.splitDim = splitDim.getInt(0); addIArgument(splitDim.getInt(0)); } }
@Override public void initFromTensorFlow(NodeDef nodeDef, SameDiff initWith, Map<String, AttrValue> attributesForNode, GraphDef graph) { val idd = nodeDef.getInput(nodeDef.getInputCount() - 1); NodeDef iddNode = null; for(int i = 0; i < graph.getNodeCount(); i++) { if(graph.getNode(i).getName().equals(idd)) { iddNode = graph.getNode(i); } } val arr = TFGraphMapper.getInstance().getNDArrayFromTensor("value",iddNode,graph); if (arr != null) { int idx = arr.getInt(0); addIArgument(idx); } }
@Override public void initFromTensorFlow(NodeDef nodeDef, SameDiff initWith, Map<String, AttrValue> attributesForNode, GraphDef graph) { val numSplits = (int) attributesForNode.get("num_split").getI(); this.numSplit = numSplits; val splitDim = TFGraphMapper.getInstance().getArrayFrom(TFGraphMapper.getInstance().getNodeWithNameFromGraph(graph,nodeDef.getInput(0)),graph); if(splitDim != null) { this.splitDim = splitDim.getInt(0); addIArgument(splitDim.getInt(0)); } addIArgument(numSplits); }
@Override public void initFromTensorFlow(NodeDef nodeDef, SameDiff initWith, Map<String, AttrValue> attributesForNode, GraphDef graph) { if(nodeDef.getInputCount() == 2) { val targetNode = TFGraphMapper.getInstance().getNodeWithNameFromGraph(graph,nodeDef.getInput(1)); val mapper = TFGraphMapper.getInstance(); val secondInputAsScalar = mapper.getNDArrayFromTensor("value",targetNode,graph); //must be scalar if(secondInputAsScalar.length() == 1) { addTArgument(secondInputAsScalar.getDouble(0)); } else { throw new ND4JIllegalStateException("Second input to node " + nodeDef + " should be scalar!"); } } }
@Override public void initFromTensorFlow(NodeDef nodeDef, SameDiff initWith, Map<String, AttrValue> attributesForNode, GraphDef graph) { val inputOne = nodeDef.getInput(1); val varFor = initWith.getVariable(inputOne); val nodeWithIndex = TFGraphMapper.getInstance().getNodeWithNameFromGraph(graph,inputOne); val var = TFGraphMapper.getInstance().getArrayFrom(nodeWithIndex,graph); if(var != null) { val idx = var.getInt(0); addIArgument(idx); } }
@Override public void initFromTensorFlow(NodeDef nodeDef, SameDiff initWith, Map<String, AttrValue> attributesForNode, GraphDef graph) { val targetNode = TFGraphMapper.getInstance().getNodeWithNameFromGraph(graph, nodeDef.getInput(1)); val dimArr = TFGraphMapper.getInstance().getNDArrayFromTensor("value", targetNode, graph); if (dimArr != null) { int axis = dimArr.data().asInt()[0]; this.axis = axis; addIArgument(this.axis); } else { this.axis = Integer.MAX_VALUE; addIArgument(this.axis); } }
return; } else if (nodeDef.getInputCount() > 1) { val shapeNode = nodeDef.getInput(1); NodeDef shapeNodeInGraph = null; for (int i = 0; i < graph.getNodeCount(); i++) {
@Override public void initFromTensorFlow(NodeDef nodeDef, SameDiff initWith, Map<String, AttrValue> attributesForNode, GraphDef graph) { val targetNode = TFGraphMapper.getInstance().getNodeWithNameFromGraph(graph, nodeDef.getInput(1)); val maxlen = TFGraphMapper.getInstance().getNDArrayFromTensor("value", targetNode, graph); if (maxlen == null){ // No 2nd input this.is_static_maxlen = true; } TFGraphMapper.getInstance().initFunctionFromProperties(nodeDef.getOp(), this, attributesForNode, nodeDef, graph); if (is_static_maxlen) { addIArgument(this.maxLen); } } @Override
val name = getNodeName(tfNode.getInput(i)); args[i] = diff.getVariable(name); if(args[i] == null) {
NodeDef permuteDimsNode = null; for (int i = 0; i < graph.getNodeCount(); i++) { if (graph.getNode(i).getName().equals(nodeDef.getInput(1))) { permuteDimsNode = graph.getNode(i);
INDArray arr = sameDiff.getVariable(args[1].getVarName()).getArr(); if (arr == null) { arr = TFGraphMapper.getInstance().getNDArrayFromTensor(nodeDef.getInput(0), nodeDef, graph);