我在使用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,)
的输入?
答案 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