我有这个使用 TF Hub 的 Elmo 层进行分类任务的网络。奇怪的是,它开始训练,但在过程中失败并出现错误:
不支持的对象类型 int
import tensorflow_hub as hub
import tensorflow as tf
elmo = hub.Module("https://tfhub.dev/google/elmo/3", trainable=True)
from tensorflow.keras.layers import Input, Lambda, Bidirectional, Dense, Dropout, Flatten, LSTM
from tensorflow.keras.models import Model
def ELMoEmbedding(input_text):
return elmo(tf.reshape(tf.cast(input_text, tf.string), [-1]), signature="default", as_dict=True)["elmo"]
def build_model():
input_layer = Input(shape=(1,), dtype="string", name="Input_layer")
embedding_layer = Lambda(ELMoEmbedding, output_shape=(1024, ), name="Elmo_Embedding")(input_layer)
BiLSTM = Bidirectional(LSTM(128, return_sequences= False, recurrent_dropout=0.2, dropout=0.2), name="BiLSTM")(embedding_layer)
Dense_layer_1 = Dense(64, activation='relu')(BiLSTM)
Dropout_layer_1 = Dropout(0.5)(Dense_layer_1)
Dense_layer_2 = Dense(32, activation='relu')(Dropout_layer_1)
Dropout_layer_2 = Dropout(0.5)(Dense_layer_2)
output_layer = Dense(1, activation='sigmoid')(Dropout_layer_2)
model = Model(inputs=[input_layer], outputs=output_layer, name="BiLSTM with ELMo Embeddings")
model.summary()
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])
return model
elmo_BiDirectional_model = build_model()
import numpy as np
import io
import re
from tensorflow import keras
i = 0
max_cells = 51
x_data = np.zeros((max_cells, 1), dtype='object')
y_data = np.zeros((max_cells, 1), dtype='float32')
with io.open('./data/names-sample.txt', encoding='utf-8') as f:
content = f.readlines()
for line in content:
line = re.sub("[\n]", " ", line)
x_data[i] = line
y_data[i] = .1 #testing!
i = i+1
with tf.Session() as session:
session.run(tf.global_variables_initializer())
session.run(tf.tables_initializer())
model_elmo = elmo_BiDirectional_model.fit(x_data, y_data, epochs=100, batch_size=5)
train_prediction = elmo_BiDirectional_model.predict(x_data)
完整错误:
INFO:tensorflow:Saver not created because there are no variables in the graph to restore
INFO:tensorflow:Saver not created because there are no variables in the graph to restore
Model: "BiLSTM with ELMo Embeddings"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
Input_layer (InputLayer) [(None, 1)] 0
_________________________________________________________________
Elmo_Embedding (Lambda) (None, None, 1024) 0
_________________________________________________________________
BiLSTM (Bidirectional) (None, 256) 1180672
_________________________________________________________________
dense_43 (Dense) (None, 64) 16448
_________________________________________________________________
dropout_28 (Dropout) (None, 64) 0
_________________________________________________________________
dense_44 (Dense) (None, 32) 2080
_________________________________________________________________
dropout_29 (Dropout) (None, 32) 0
_________________________________________________________________
dense_45 (Dense) (None, 1) 33
=================================================================
Total params: 1,199,233
Trainable params: 1,199,233
Non-trainable params: 0
_________________________________________________________________
Train on 51 samples
Epoch 1/100
30/51 [================>.............] - ETA: 2s - loss: 0.5324 - acc: 0.0000e+00 Traceback (most recent call last):
File "C:\temp\Simon\TestElmo2.py", line 52, in <module>
model_elmo = elmo_BiDirectional_model.fit(x_data, y_data, epochs=100, batch_size=5)
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow_core\python\keras\engine\training.py", line 727, in fit
use_multiprocessing=use_multiprocessing)
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow_core\python\keras\engine\training_arrays.py", line 675, in fit
steps_name='steps_per_epoch')
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow_core\python\keras\engine\training_arrays.py", line 394, in model_iteration
batch_outs = f(ins_batch)
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow_core\python\keras\backend.py", line 3476, in __call__
run_metadata=self.run_metadata)
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow_core\python\client\session.py", line 1472, in __call__
run_metadata_ptr)
InternalError: Unsupported object type int