2017-03-27 26 views
5

Tôi biết phụ trợ mặc định cho Keras đã chuyển từ Theano để TensorFlow, nhưng với phiên bản dev của Theano tôi có thể đào tạo trên GPU với OpenCL (Tôi có một Thẻ AMD).

Tuy nhiên, khi tôi nhập Keras, nó chỉ sử dụng TensorFlow backend ngay cả sau khi tôi đã thay đổi các giá trị trong tập tin cấu hình Keras:

~ $ cat $HOME/.keras/keras.json 
{"epsilon": 1e-07, "floatx": "float32", "backend": "theano"} 

~ $ python -c 'import keras' 
Using TensorFlow backend. 

~ $ KERAS_BACKEND=theano python -c 'import keras' 
Using Theano backend. 
Mapped name None to device opencl0:2: AMD Radeon R9 M370X Compute Engine 

Bên cạnh đó, tôi biết rằng Keras đang đọc tập tin cấu hình sau khi nhập khẩu vì nếu tôi điền vào một số giá trị không hợp lệ cho "backend" tôi nhận được một lỗi:

~ $ cat $HOME/.keras/keras.json 
{"epsilon": 1e-07, "floatx": "float32", "backend": "foobar"} 


~ $ python -c 'import keras' 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
    File "/Users/antalek/anaconda/envs/ENVPy3/lib/python3.5/site-packages/keras/__init__.py", line 3, in <module> 
    from . import activations 
    File "/Users/antalek/anaconda/envs/ENVPy3/lib/python3.5/site-packages/keras/activations.py", line 3, in <module> 
    from . import backend as K 
    File "/Users/antalek/anaconda/envs/ENVPy3/lib/python3.5/site-packages/keras/backend/__init__.py", line 34, in <module> 
    assert _backend in {'theano', 'tensorflow'} 
AssertionError 

Hệ thống chi tiết:

  • Mac OSX 10.11.6
  • Anaconda Python v 3.5
  • Keras v 2.0.2

Tôi muốn có Keras sử dụng Theano như là phụ trợ mặc định. Bất cứ ai biết làm thế nào để thiết lập nó như vậy?

EDIT:

Để trả lời @Marcin Możejko 's câu hỏi:

~ $ which python 
/Users/<my name>/anaconda/envs/ENVPy3/bin/python 

Đó là môi trường ảo conda rằng Keras được cài đặt trong là tốt.

+0

là một 'python' trong giao diện điều khiển của bạn phù hợp với một 'distribiution conda'? –

+0

thêm một chỉnh sửa để giải quyết câu hỏi của bạn – themantalope

Trả lời

6

Cùng một vấn đề ở đây, hệ thống thiết lập:

  • Ubuntu 16,04
  • Anaconda + Python 3.6
  • Keras 2.0.2

Cách duy nhất để thay đổi backend là sử dụng môi trường KERAS_BACKEND biến. Trường Json bị bỏ qua.

EDIT: Vấn đề là Anaconda, mở anaconda3/envs/ENV-NAME/etc/conda/activate.d/keras_activate.sh

#!/bin/bash 
if [ "$(uname)" == "Darwin" ] 
then 
    # for Mac OSX 
    export KERAS_BACKEND=tensorflow 
elif [ "$(uname)" == "Linux" ] 
then 
    # for Linux 
    export KERAS_BACKEND=theano 
fi 

Bạn sẽ thấy tensorflow rằng buộc cho MAC, và Theano cho Linux.

Tôi không có ý tưởng những người tạo ra tập tin này, keras hoặc Anaconda, và lý do đằng sau buộc này. Tôi chỉ bỏ qua nó và làm theo cách riêng của tôi :)

+0

Cảm ơn bạn đã cho tôi biết. Tôi đã mở một [vấn đề về nguyên liệu keras] (https://github.com/conda-forge/keras-feedstock/issues/13) repa-forge repo. Hy vọng rằng họ có thể cung cấp cho một số rõ ràng về lý do tại sao những lựa chọn thiết kế đã được thực hiện. – themantalope

+1

Tôi đã gửi một PR trên [repo github] (https://github.com/conda-forge/keras-feedstock/pull/14). Hy vọng rằng sẽ được chấp nhận. – themantalope

+0

bằng cách chơi xung quanh với nâng cấp/hạ Keras trong Anaconda tôi phát hiện ra rằng Keras 1.2.2 tạo ra những tập tin này – user1118094

Các vấn đề liên quan