TensorFlow中model.fit参数报错及metrics拼写错误问题排查
解决TensorFlow model.fit训练时的报错问题
核心问题排查与修复
1. 修正Metrics参数的拼写错误
模型编译代码中存在明显笔误:metrics=['aaccracy']里的指标名称拼写错误,正确名称应为accuracy。TensorFlow无法识别错误的指标名称,这是触发报错的直接原因之一。
修正后的编译代码:
model.compile(optimizer=Adam(learning_rate=0.0001), loss='sparse_categorical_crossentropy', metrics=['accuracy'])
2. 转换输入数据为NumPy数组格式
你的训练样本和标签当前是Python列表格式,而TensorFlow的model.fit要求输入为NumPy数组或TensorFlow张量。需要先完成格式转换:
import numpy as np # 转换训练样本数组 scaled_train_samples = np.array(scaled_train_samples) # 转换训练标签数组 train_labels = np.array(train_labels)
3. 确认model.fit的参数格式(已完成正确修正)
你第二次调用model.fit的格式是正确的:
model.fit(scaled_train_samples, train_labels, batch_size=4, epochs=3)
第一次使用的{batchSize: 4, epochs: 3}是JavaScript风格的对象语法,Python不支持这种写法,改用关键字参数是正确的选择。
完整可运行代码示例
import numpy as np from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.optimizers import Adam # 定义模型 model = Sequential([ Dense(units=16, input_shape=(1,), activation='relu'), # 第一层 Dense(units=32, activation='relu'), # 第二层 Dense(units=2, activation='softmax'), # 全连接输出层 ]) # 编译模型(修正metrics拼写错误) model.compile(optimizer=Adam(learning_rate=0.0001), loss='sparse_categorical_crossentropy', metrics=['accuracy']) # 转换训练数据为NumPy数组 scaled_train_samples = np.array([ [0.22093023], [0.6627907], [0.44186047], [0.40697674], [0.97674419], [0.04651163], [0.19767442], [0.61627907], [0.03488372], [0.44186047], [0.43023256], [0.8255814], [0.48837209], [0.20930233], [0.46511628], [0.81395349], [0.15116279], [0.18604651], [0.43023256], [0.61627907] ]) train_labels = np.array([ 1,0,1,0,1,0,1,0,1,0, 1,0,1,0,1,0,1,0,1,0 ]) # 启动训练 model.fit(scaled_train_samples, train_labels, batch_size=4, epochs=3)
内容的提问来源于stack exchange,提问作者mohamed nageh
相关产品推荐
相关产品推荐

