我目前正在学习深度学习和 Keras。当我执行这段代码时,我收到了奇怪的错误:“TypeError: Unable to build Denselayer with non-floating point dtype ”,我不知道是什么问题。我错过了什么?如何修复这个奇怪的错误?
错误显示在 model.fit(...
def create_nerual_network():
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu)) # Simple Dense Layer
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu)) # Simple Dense Layer
model.add(tf.keras.layers.Dense(2, activation=tf.nn.softmax)) # Output layer
return model
train_images, train_labels = load_dataset() #this function works fine
model = create_nerual_network()
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])
model.fit(train_images, train_labels, epochs = 15, verbose=2)
train_loss, train_acc = model.evaluate(train_images, train_labels)
Run Code Online (Sandbox Code Playgroud)
有趣的是,您没有在模型编译之前的任何地方指定您的输入形状,但也许较新版本的 Keras 可以从提供的输入中弄清楚这一点。
在这种情况下,我很确定问题出在train_images,看看这个数组的 dtype 是什么,它可能int8是图像的常用格式,因为它们为每个颜色通道使用 8 位整数。
通常的做法是至少在训练前对数据进行标准化,并始终将其转换为浮点数。尝试在调用之前放置它model.fit:
train_images = train_images / 256.
Run Code Online (Sandbox Code Playgroud)
这会将您的图像标准化为范围[0, 1)并将其转换为浮点数组。您可能必须将标签也转换为浮点数。
| 归档时间: |
|
| 查看次数: |
4653 次 |
| 最近记录: |