J Brewer
J Brewer

Reputation: 305

Tensorflow: not resolving in gradle

When I opened up Android Studio this morning, I got this error when Gradle tried to sync:

Error:(103, 13) Failed to resolve: org.tensorflow:tensorflow-android:+

As per the instructions in their Github readme, they use a dynamic version (which Android Studio warns me about). It had been working just the day before.

I did try using the only explicit version they have: 1.3.0, but this leads to another problem when trying to load their speech recognition model with their sample code:

java.lang.RuntimeException: Failed to load model from 'file:///android_asset/conv_actions_frozen.pb'
    [...]
Caused by: java.io.IOException: Not a valid TensorFlow Graph serialization: Shape must be rank 1 but is rank 0 for 'Mfcc' (op: 'Mfcc') with input shapes: [16000,0,257], [].
    at org.tensorflow.contrib.android.TensorFlowInferenceInterface.loadGraph(TensorFlowInferenceInterface.java:398)
    at org.tensorflow.contrib.android.TensorFlowInferenceInterface.<init>(TensorFlowInferenceInterface.java:97)

I've tried searching for a solution to that separately, but importing the dynamic version fixes it. If there was another workaround, that would also solve my problem.

I'm also getting a 404 when I try to go to their package repository page linked to in the readme: https://bintray.com/google/tensorflow/tensorflow-android

My build.gradle file:

apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.firebase-crash'
apply plugin: 'com.google.firebase.firebase-perf'

ext {
    grpcVersion = '1.6.1'
}

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    defaultConfig {
        applicationId [HIDDEN]
        minSdkVersion 21
        targetSdkVersion 25
        versionCode 1
        versionName "a10_10"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            debuggable true
            multiDexEnabled true
        }
    }

    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/INDEX.LIST'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/io.netty.versions.properties'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/project.properties'
    }
}

allprojects {
    repositories {
        jcenter()
        maven {
            url "https://maven.google.com"
        }
    }
}

buildscript {
    repositories {
        jcenter()
        maven {
            url "https://maven.google.com"
        }
    }
    dependencies {
        classpath 'com.google.gms:google-services:3.1.1'
        classpath 'com.google.firebase:firebase-plugins:1.1.1'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})

    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.android.support:design:25.3.1'
    compile 'com.android.support:cardview-v7:25.3.1'
    compile 'com.android.support:recyclerview-v7:25.3.1'
    compile 'com.google.code.findbugs:jsr305:2.0.1'

    compile("io.grpc:grpc-okhttp:$grpcVersion") {
        exclude group: 'com.google.code.findbugs'
    }
    compile("io.grpc:grpc-stub:$grpcVersion") {
        exclude group: 'com.google.code.findbugs'
    }

    compile('com.google.cloud:google-cloud-speech:0.25.0-alpha') {
        exclude group: 'com.google.cloud', module: 'google-cloud-core-grpc'
        exclude group: 'com.google.code.findbugs'
        exclude group: 'org.apache.httpcomponents'
        exclude group: 'com.google.cloud', module: 'google-cloud-core'
    }

    compile('com.google.cloud:google-cloud-core-grpc:1.7.0') {
        exclude group: 'com.google.cloud', module: 'google-cloud-core'
        exclude group: 'com.google.code.findbugs'
        exclude group: 'org.apache.httpcomponents'
    }

    // OAuth2 for Google API
    compile('com.google.auth:google-auth-library-oauth2-http:0.8.0') {
        exclude module: 'httpclient'
    }

    //noinspection GradleDynamicVersion
    compile 'org.tensorflow:tensorflow-android:+'

    compile 'commons-io:commons-io:2.5'
    compile 'org.apache.commons:commons-lang3:3.6'

    compile 'com.google.firebase:firebase-crash:11.4.2'
    compile 'com.google.firebase:firebase-perf:11.4.2'
    compile 'com.google.firebase:firebase-auth:11.4.2'
    compile 'com.google.firebase:firebase-storage:11.4.2'
    compile 'com.google.firebase:firebase-database:11.4.2'
    compile 'com.google.android.gms:play-services-auth:11.4.2'

    testCompile 'junit:junit:4.12'
}

apply plugin: 'com.google.gms.google-services'

Upvotes: 4

Views: 2927

Answers (2)

kbs
kbs

Reputation: 226

There's a temporary problem where the artifacts were incorrectly removed from jcenter.

Please see https://github.com/tensorflow/tensorflow/issues/13653#issuecomment-336145329

Upvotes: 1

Cameron
Cameron

Reputation: 931

I got the same error

java.lang.RuntimeException: Failed to load model from 'file:///android_asset/conv_actions_frozen.pb'

using tensorflow-android 1.3.0 (found here https://mvnrepository.com/artifact/org.tensorflow/tensorflow-android/1.3.0).

However, I was able to get the sample speech recognition app to run using a nightly build (http://ci.tensorflow.org/view/Nightly/job/nightly-android/286/artifact/out/tensorflow.aar).

You'll have to download the .aar, add it to your project and replace

compile 'org.tensorflow:tensorflow-android:+'

with the .aar.

Upvotes: 1

Related Questions