前提・実現したいこと
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
回答1件
あなたの回答
tips
プレビュー