Imported Upstream version 1.4.0
[platform/core/ml/nnfw.git] / compiler / tf2tfliteV2-value-pbtxt-test / testall.sh
1 #!/bin/bash
2
3 # Need at least 2 arguments
4 if [[ $# -lt 2 ]]; then
5   echo "USAGE: $0 ..."
6   echo
7   echo "ARGUMENTS:"
8   echo "  [test.config path]"
9   echo "  [WORKDIR]"
10   echo "  [Prefix1]"
11   echo "  [Prefix2]"
12   echo "  ..."
13   exit 255
14 fi
15
16 CONFIG_PATH="$1"; shift
17 WORKDIR="$1"; shift
18
19 source "${CONFIG_PATH}"
20
21 echo "-- Found nnkit-run: ${NNKIT_RUN_PATH}"
22 echo "-- Found TF backend: ${TF_BACKEND_PATH}"
23 echo "-- Found TFLITE backend: ${TFLITE_BACKEND_PATH}"
24 echo "-- Found TF2TFLITEV2: ${TF2TFLITEV2_PATH}"
25 echo "-- Found randomize action: ${RANDOMIZE_ACTION_PATH}"
26 echo "-- Found HDF5 export action: ${HDF5_EXPORT_ACTION_PATH}"
27 echo "-- Found HDF5 import action: ${HDF5_IMPORT_ACTION_PATH}"
28 echo "-- Found i5diff: ${I5DIFF_PATH}"
29 echo "-- Found workdir: ${WORKDIR}"
30
31 TESTED=()
32 PASSED=()
33 FAILED=()
34
35 pushd "${WORKDIR}"
36 while [[ $# -ne 0 ]]; do
37   PREFIX="$1"; shift
38
39   TESTED+=("${PREFIX}")
40
41   PASSED_TAG="${PREFIX}.passed"
42
43   rm -f "${PASSED_TAG}"
44
45   cat > "${PREFIX}.log" <(
46     exec 2>&1
47
48     echo "-- Found pb: ${PREFIX}.pb"
49
50     # Exit immediately if any command fails
51     set -e
52     # Show commands
53     set -x
54
55     # Generate tflite
56     source "${VIRTUALENV}/bin/activate"
57     "${VIRTUALENV}/bin/python" "${TF2TFLITEV2_PATH}" \
58       --v1 \
59       --input_path "${WORKDIR}/${PREFIX}.pb" \
60       --input_arrays "$(awk -F, '/^input/ { print $2 }' ${PREFIX}.info | cut -d: -f1 | tr -d ' ' | paste -d, -s)" \
61       --input_shapes "$(cat ${PREFIX}.info | grep '^input' | cut -d '[' -f2 | cut -d ']' -f1 | tr -d ' ' | xargs | tr ' ' ':')" \
62       --output_path "${WORKDIR}/${PREFIX}.tflite" \
63       --output_arrays "$(awk -F, '/^output/ { print $2 }' ${PREFIX}.info | cut -d: -f1 | tr -d ' ' | paste -d, -s)"
64
65     # Run TensorFlow
66     "${NNKIT_RUN_PATH}" \
67       --backend "${TF_BACKEND_PATH}" \
68       --backend-arg "${WORKDIR}/${PREFIX}.pb" \
69       --backend-arg "${WORKDIR}/${PREFIX}.info" \
70       --pre "${RANDOMIZE_ACTION_PATH}" \
71       --pre "${HDF5_EXPORT_ACTION_PATH}" \
72       --pre-arg "${WORKDIR}/${PREFIX}.input.h5" \
73       --post "${HDF5_EXPORT_ACTION_PATH}" \
74       --post-arg "${WORKDIR}/${PREFIX}.expected.h5"
75
76     # Run TensorFlow Lite
77     "${NNKIT_RUN_PATH}" \
78       --backend "${TFLITE_BACKEND_PATH}" \
79       --backend-arg "${WORKDIR}/${PREFIX}.tflite" \
80       --pre "${HDF5_IMPORT_ACTION_PATH}" \
81       --pre-arg "${WORKDIR}/${PREFIX}.input.h5" \
82       --post "${HDF5_EXPORT_ACTION_PATH}" \
83       --post-arg "${WORKDIR}/${PREFIX}.obtained.h5"
84
85     "${I5DIFF_PATH}" -d 0.001 "${PREFIX}.expected.h5" "${PREFIX}.obtained.h5"
86
87     if [[ $? -eq 0 ]]; then
88       touch "${PASSED_TAG}"
89     fi
90   )
91
92   if [[ -f "${PASSED_TAG}" ]]; then
93     PASSED+=("$PREFIX")
94   else
95     FAILED+=("$PREFIX")
96   fi
97 done
98 popd
99
100 if [[ ${#TESTED[@]} -ne ${#PASSED[@]} ]]; then
101   echo "FAILED"
102   for TEST in "${FAILED[@]}"
103   do
104     echo "- ${TEST}"
105   done
106   exit 255
107 fi
108
109 echo "PASSED"
110 exit 0