在TensorFlow 2.0中使用tf.Dataset进行训练

时间:2019-11-02 16:01:07

标签: python python-3.x numpy tensorflow

我在使用tf.Dataset而不是pd.DataFrame来训练我的TensorFlow模型时遇到困难(效果很好)。

我在下面创建了一个虚拟示例,鉴于在网上/在TensorFlow website上阅读的内容,我希望该示例可以正常工作。

!pip install tensorflow==2.0.0 > /dev/null

import numpy as np
import tensorflow as tf

features, target = np.random.rand(100, 30), np.random.randint(0, 2, 100)
dataset = tf.data.Dataset.from_tensor_slices((features, target))

model = tf.keras.Sequential([
    tf.keras.layers.Dense(30, activation='relu', input_shape=(30,)),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Dropout(0.5),

    tf.keras.layers.Dense(30, activation='relu'),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Dropout(0.5),

    tf.keras.layers.Dense(1, activation='sigmoid')
])

model.compile(
    optimizer='adam',
    loss='binary_crossentropy',
    metrics=['accuracy']
)

model.fit(
    dataset, 
    epochs=10,
)

返回以下错误消息

...

ValueError: Error when checking input: expected dense_input to have shape (30,) but got array with shape (1,)

上面明显有什么错误吗?为什么TensorFlow捕获形状为(1,)的输入?

1 个答案:

答案 0 :(得分:0)

尝试使用list = [ {'Key1': 'Value1', 'Key2': 'Value2'}, {'Key1': 'Value1', 'Key2': 'Value2'} ] for i in list: print('Key1: ', i['Key1'], 'Key2: ', i['Key2']) 代替tf.data.Dataset.from_tensors

此处说明的差异:https://stackoverflow.com/a/55370549/10418812