lin*_*ing 5 python keras tensorflow tensorflow2.0
def get_train_dataset(file_path, **kwargs):
dataset = tf.data.experimental.make_csv_dataset(
file_path,
batch_size=5,
label_name=LABEL_COLUMN,
na_value="?",
num_epochs=1,
ignore_errors=True,
**kwargs)
return dataset
raw_train_data = get_train_dataset(train_file_path, select_columns=CSV_COLUMNS)
Run Code Online (Sandbox Code Playgroud)
我从“make_csv_dataset”函数创建了一个数据集,它是 OrderDict 的 PrefectDataset。但是,当我拟合模型时:
embedding = "https://tfhub.dev/google/tf2-preview/gnews-swivel-20dim/1"
hub_layer = hub.KerasLayer(embedding, input_shape=[],
dtype=tf.string, trainable=True)
model = tf.keras.Sequential()
model.add(hub_layer)
model.add(tf.keras.layers.Dense(16, activation='relu'))
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
history = model.fit(train_data.shuffle(10000),
epochs=20,
validation_data=val_data,
verbose=1)
Run Code Online (Sandbox Code Playgroud)
它报告一个错误:
File "/home/my-env/tf/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training_v2_utils.py", line 118, in <listcomp>
inputs = [inputs[key] for key in model._feed_input_names]
KeyError: 'keras_layer_input'
Run Code Online (Sandbox Code Playgroud)
我希望将此 OrderedDictionary 转换为 TF.Tensor,然后“fit”方法应该可以工作。怎么做?或者还有其他方法可以解决这个问题吗?
在另一篇文章中,我看到:
The not very elegant workaround you can try is to match the name of input layer with csv column name
Run Code Online (Sandbox Code Playgroud)
我的 csv 文本列名称是“文本”。如果我想使用上面的解决方法,该怎么做?
我认为问题出在其他地方,但首先更改fit. 您没有train_data在任何地方定义变量。
如果仍然不起作用,则get_train_data用此行替换您的内容,同时将值提供给其中相应的参数。
dataset = tf.data.experimental.make_csv_dataset('PATH OR FILE NAME', batch_size = 1,select_columns = ['Column1','Label'], label_name = 'Label', num_epochs = 1 ,shuffle = True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3245 次 |
| 最近记录: |