質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

577閲覧

Kerasのlstmサンプルコードを動かしたい(import error)

退会済みユーザー

退会済みユーザー

総合スコア0

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/01/31 12:56

編集2019/02/01 07:49

前提・実現したいこと

Python初心者です。
Kerasのlstmサンプルコードを自分のPCで動かそうとしています。

発生している問題・エラーメッセージ

02.01. 修正しました。

ImportError Traceback (most recent call last) <ipython-input-7-3c17159f9610> in <module> 1 2 from __future__ import print_function ----> 3 from keras.callbacks import LambdaCallback 4 from keras.models import Sequential 5 from keras.layers import Dense, Activation ~\Anaconda3\envs\tensorflow16\lib\site-packages\keras\__init__.py in <module> 1 from __future__ import absolute_import 2 ----> 3 from . import utils 4 from . import activations 5 from . import applications ~\Anaconda3\envs\tensorflow16\lib\site-packages\keras\utils\__init__.py in <module> 25 from .np_utils import to_categorical 26 from .np_utils import normalize ---> 27 from .multi_gpu_utils import multi_gpu_model ~\Anaconda3\envs\tensorflow16\lib\site-packages\keras\utils\multi_gpu_utils.py in <module> 5 from __future__ import print_function 6 ----> 7 from ..layers.merge import concatenate 8 from .. import backend as K 9 from ..layers.core import Lambda ~\Anaconda3\envs\tensorflow16\lib\site-packages\keras\layers\__init__.py in <module> 3 from ..utils.generic_utils import deserialize_keras_object 4 from ..engine.base_layer import Layer ----> 5 from ..engine import Input 6 from ..engine import InputLayer 7 from ..engine.base_layer import InputSpec ~\Anaconda3\envs\tensorflow16\lib\site-packages\keras\engine\__init__.py in <module> 6 from .base_layer import Layer 7 from .network import get_source_inputs ----> 8 from .training import Model ~\Anaconda3\envs\tensorflow16\lib\site-packages\keras\engine\training.py in <module> 19 from .training_utils import standardize_weights 20 from .training_utils import weighted_masked_objective ---> 21 from . import training_arrays 22 from . import training_generator 23 from .. import backend as K ~\Anaconda3\envs\tensorflow16\lib\site-packages\keras\engine\training_arrays.py in <module> 6 7 import numpy as np ----> 8 from scipy.sparse import issparse 9 10 from .training_utils import batch_shuffle ~\Anaconda3\envs\tensorflow16\lib\site-packages\scipy\__init__.py in <module> 117 del _NumpyVersion 118 --> 119 from scipy._lib._ccallback import LowLevelCallable 120 121 from scipy._lib._testutils import PytestTester ~\Anaconda3\envs\tensorflow16\lib\site-packages\scipy\_lib\_ccallback.py in <module> ----> 1 from . import _cbackcall_c 2 3 import ctypes 4 5 PyCFuncPtr = ctypes.CFUNCTYPE(ctypes.c_void_p).__bases__[0] ImportError: cannot import name '_ccallback_c'

該当のソースコード

'''Example script to generate text from Nietzsche's writings. At least 20 epochs are required before the generated text starts sounding coherent. It is recommended to run this script on GPU, as recurrent networks are quite computationally intensive. If you try this script on new data, make sure your corpus has at least ~100k characters. ~1M is better. ''' from __future__ import print_function from keras.callbacks import LambdaCallback from keras.models import Sequential from keras.layers import Dense from keras.layers import LSTM from keras.optimizers import RMSprop from keras.utils.data_utils import get_file import numpy as np import random import sys import io path = get_file( 'nietzsche.txt', origin='https://s3.amazonaws.com/text-datasets/nietzsche.txt') with io.open(path, encoding='utf-8') as f: text = f.read().lower() print('corpus length:', len(text)) chars = sorted(list(set(text))) print('total chars:', len(chars)) char_indices = dict((c, i) for i, c in enumerate(chars)) indices_char = dict((i, c) for i, c in enumerate(chars)) maxlen = 40 step = 3 sentences = [] next_chars = [] for i in range(0, len(text) - maxlen, step): sentences.append(text[i: i + maxlen]) next_chars.append(text[i + maxlen]) print('nb sequences:', len(sentences)) print('Vectorization...') x = np.zeros((len(sentences), maxlen, len(chars)), dtype=np.bool) y = np.zeros((len(sentences), len(chars)), dtype=np.bool) for i, sentence in enumerate(sentences): for t, char in enumerate(sentence): x[i, t, char_indices[char]] = 1 y[i, char_indices[next_chars[i]]] = 1 print('Build model...') model = Sequential() model.add(LSTM(128, input_shape=(maxlen, len(chars)))) model.add(Dense(len(chars), activation='softmax')) optimizer = RMSprop(lr=0.01) model.compile(loss='categorical_crossentropy', optimizer=optimizer) def sample(preds, temperature=1.0): # helper function to sample an index from a probability array preds = np.asarray(preds).astype('float64') preds = np.log(preds) / temperature exp_preds = np.exp(preds) preds = exp_preds / np.sum(exp_preds) probas = np.random.multinomial(1, preds, 1) return np.argmax(probas) def on_epoch_end(epoch, _): # Function invoked at end of each epoch. Prints generated text. print() print('----- Generating text after Epoch: %d' % epoch) start_index = random.randint(0, len(text) - maxlen - 1) for diversity in [0.2, 0.5, 1.0, 1.2]: print('----- diversity:', diversity) generated = '' sentence = text[start_index: start_index + maxlen] generated += sentence print('----- Generating with seed: "' + sentence + '"') sys.stdout.write(generated) for i in range(400): x_pred = np.zeros((1, maxlen, len(chars))) for t, char in enumerate(sentence): x_pred[0, t, char_indices[char]] = 1. preds = model.predict(x_pred, verbose=0)[0] next_index = sample(preds, diversity) next_char = indices_char[next_index] generated += next_char sentence = sentence[1:] + next_char sys.stdout.write(next_char) sys.stdout.flush() print() print_callback = LambdaCallback(on_epoch_end=on_epoch_end) model.fit(x, y, batch_size=128, epochs=60, callbacks=[print_callback])

試したこと

02.01.追記しました。

'_cbackcall_c'は
\Anaconda3\envs\tensorflow16\lib\site-packages\scipy_lib_ccallback.py
にある変数だと思い、別のファイルと同じ名前を付けている可能性を考えました。
該当ファイル内の '_cbackcall_c'を別の名前('_cbackcall_c')に変えてみましたが変数の名前だけが変わった同じエラーが出ました。

補足情報(FW/ツールのバージョンなど)

windows10
Python3.6.6
tensorflow1.12.0
Keras2.2.4

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2019/01/31 22:08

どの行でエラーになっているんです?
quickquip

2019/01/31 23:45

「'_cbackcall_c'を別の名前に変えてみました」も実際になにをしたのかがわからないですね。
退会済みユーザー

退会済みユーザー

2019/02/01 07:50

ご指摘ありがとうございます。質問に追記をしました。
guest

回答1

0

ベストアンサー

https://anaconda.org/anaconda/scipy/filesから、例えばwin-64/scipy-1.2.0-py36h29ff71c_0.tar.bz2をダウンロードして解凍すると、Lib/site-packages/scipy/_lib/_ccallback_c.cp36-win_amd64.pyd というファイルがあってその正体はWindows用のDLLで、これがPythonコードにおける_ccallback_cの正体です。(macOS CPythonなら_ccallback_c.cpython-36m-darwin.soなどというファイル名になる)

そのファイルは存在しますか?

scipyを変な方法で上書きしたりしませんでしたか?

condaコマンドでscipyをインストールし直してはどうでしょうか?

投稿2019/02/01 08:16

quickquip

総合スコア11029

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/02/01 09:32

scipyを再度インストールしたら、動きました。初学者未満の状態で、独力では気づけませんでした。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問