【问题标题】:Keras backend json is defined to be tensorflow, but Keras still can't find tensorflowKeras后端json定义为tensorflow,但是Keras还是找不到tensorflow
【发布时间】:2017-01-30 00:38:50
【问题描述】:

我已将 keras 的 json 文件更改为以下内容:

{
    "image_dim_ordering": "tf", 
    "epsilon": 1e-07, 
    "floatx": "float32", 
    "backend": "tensorflow"
}

但是当我为神经网络运行以下简单的 Keras 教程时:

from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation
from keras.optimizers import SGD

model = Sequential()
# Dense(64) is a fully-connected layer with 64 hidden units.
# in the first layer, you must specify the expected input data shape:
# here, 20-dimensional vectors.
model.add(Dense(64, input_dim=20, init='uniform'))
model.add(Activation('tanh'))
model.add(Dropout(0.5))
model.add(Dense(64, init='uniform'))
model.add(Activation('tanh'))
model.add(Dropout(0.5))
model.add(Dense(10, init='uniform'))
model.add(Activation('softmax'))

sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy',
              optimizer=sgd,
              metrics=['accuracy'])

model.fit(X_train, y_train,
          nb_epoch=20,
          batch_size=16)
score = model.evaluate(X_test, y_test, batch_size=16)

来自:https://keras.io/getting-started/sequential-model-guide/

我仍然收到以下错误:

Using TensorFlow backend.
Traceback (most recent call last):
  File "./keras_test", line 3, in <module>
    from keras.models import Sequential
  File "/usr/local/lib/python2.7/dist-packages/keras/__init__.py", line 2, in <module>
    from . import backend
  File "/usr/local/lib/python2.7/dist-packages/keras/backend/__init__.py", line 67, in <module>
    from .tensorflow_backend import *
  File "/usr/local/lib/python2.7/dist-packages/keras/backend/tensorflow_backend.py", line 1, in <module>
    import tensorflow as tf
ImportError: No module named tensorflow

我不知道问题可能是什么,因此非常感谢您的帮助。

最初我认为这可能是 python 版本控制问题。由于我对 python 编码和 Linux 有点陌生,所以我一直在安装/升级我所有的 python 版本而没有真正考虑,我只希望 Keras 将使用与我的 Tensorflow 后端相同的 python 版本(应该是 anaconda3 使用的那个)。事后看来,我真的应该使用 virtualenv,但我不确定这是否是我的问题(只是试图提供尽可能多的信息)。

我使用以下方式安装了 Keras:

 sudo pip install keras

如果我再次运行它,我会得到以下输出:

Requirement already satisfied (use --upgrade to upgrade): keras in /usr/local/lib/python2.7/dist-packages
Requirement already satisfied (use --upgrade to upgrade): theano in /usr/local/lib/python2.7/dist-packages (from keras)
Requirement already satisfied (use --upgrade to upgrade): pyyaml in /usr/local/lib/python2.7/dist-packages (from keras)
Requirement already satisfied (use --upgrade to upgrade): six in /usr/local/lib/python2.7/dist-packages (from keras)
Requirement already satisfied (use --upgrade to upgrade): numpy>=1.7.1 in /usr/local/lib/python2.7/dist-packages (from theano->keras)
Requirement already satisfied (use --upgrade to upgrade): scipy>=0.11 in /usr/local/lib/python2.7/dist-packages (from theano->keras)
You are using pip version 8.1.2, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

此外,我 100% 确定我的 Tensorflow 安装工作正常,因为我已经为它运行(并编写了代码)一些 GPU-Cuda 示例。

谢谢!

【问题讨论】:

  • 您是否在 conda 环境中运行 keras?当你启动 python 然后 'import tensorflow' 会发生什么?
  • 当我启动 python 并使用'import tensorflow'时,我没有收到任何错误消息。一切都很完美。我不是在 conda 环境中运行,一切都在我的主 PC/系统上。话虽如此,当我在 virtualenv 中完成所有操作时,一切似乎都运行良好(并不是说这有助于解决我在此处发布的问题),但我至少可以开始使用 keras。 ://

标签: python machine-learning tensorflow theano keras


【解决方案1】:

我想你忘记了最明显的事情,TensorFlow 没有安装,它不是 Keras 依赖项。我建议你安装 TensorFlow:

pip install --user tensorflow

这会将 TensorFlow 安装在我们的用户文件夹 (~/.local) 中,并且不需要 root 权限。

【讨论】:

  • 我相信我已经安装了 TensorFlow。 :/ 因为我已经在我的计算机上安装并实际上使用了 tensorflow-gpu,所以我知道它在那里并且可以正常工作
  • @pche8701 当然可以,但问题不包含任何已安装 tensorflow 的证据。请提供一些。
【解决方案2】:

你可以安装 tensorflow 和 keras 的所有依赖,如下所示,

此设置适用于 Ubuntu 14.04 服务器

# Pick up some TF dependencies
apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    curl \
    git \
    cmake \
    libfreetype6-dev \
    libpng12-dev \
    libzmq3-dev \
    pkg-config \
    python \
    python-dev \
    rsync \
    software-properties-common \
    unzip \
    && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

curl -O https://bootstrap.pypa.io/get-pip.py && \
python get-pip.py && \
rm get-pip.py

pip --no-cache-dir install --upgrade ipython && \
pip --no-cache-dir install \
    ipykernel \
    jupyter \
    matplotlib \
    numpy \
    scipy \
    sklearn \
    pandas \
    Pillow \
    && \
python -m ipykernel.kernelspec

# Install TensorFlow CPU version from central repo
pip --no-cache-dir install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.1-cp27-none-linux_x86_64.whl

# h5py is optional dependency for keras
apt-get update && apt-get install -y libhdf5-dev libhdf5-serial-dev
pip install keras h5py

如果您仍然遇到环境问题,我建议您使用此Dockerfile。这使我们能够独立于本地 python 工作,我发现这对于在任何其他系统上复制环境非常有帮助。您可能还会发现 Datmo 转换有助于实现这一点。

免责声明:我在这家名为 Datmo 的公司工作,我们正在通过简化机器学习工作流程来建立一个开发人员社区

【讨论】:

    猜你喜欢
    • 2021-06-15
    • 1970-01-01
    • 2018-04-26
    • 2017-12-17
    • 2023-03-19
    • 2018-07-18
    • 2017-12-23
    • 2018-10-02
    • 2019-12-15
    相关资源
    最近更新 更多