所以我在下面有這段代碼,它將我處理過的資料放入我的模型中:
with np.load("/content/data.npz") as data:
train_examples = data["features"]
train_labels = data["labels"]
train_dataset = tf.data.Dataset.from_tensor_slices((train_examples, train_labels))
print(train_dataset)
# eventually we need to add validation for accuracy purposes
# for better accuracy and strength increase this
model = Sequential()
model.add(Conv2D(filters=10, kernel_size=1, activation="relu", input_shape=(14, 8, 8)))
model.add(MaxPooling2D(pool_size=2, strides=None))
model.add(Flatten())
model.add(BatchNormalization())
model.add(Dense(1, activation="sigmoid"))
model.compile(optimizer=optimizers.Adam(5e-4), loss="mean_squared_error")
model.summary()
checkpoint_filepath = "/tmp/checkpoint/"
model_checkpointing_callback = ModelCheckpoint(
filepath=checkpoint_filepath,
save_best_only=True,
)
model.fit(
train_examples,
train_labels,
epochs=1000,
verbose=1,
callbacks=[
callbacks.ReduceLROnPlateau(monitor="loss", patience=10),
callbacks.EarlyStopping(monitor="loss", patience=15, min_delta=1e-4),
model_checkpointing_callback,
],
)
model.save("model.h5")
現在,我不知道我是否只是誤解了張量是如何作業的,但是如果我這樣做了,但是當我直接使用它傳遞資料時,model.fit(train_dataset)我會得到錯誤Input layer 0 of model expects input shape of (None, 14, 8, 8) but got (14,8,8)model.fit(train_examples, train_labels)
通過閱讀 tf 示例,如果我有一堆 28x28 像素的影像,在一個 28x28 大小的陣列中,那么如果我從影像創建一個資料集,并將我的模型輸入形狀定義為 (28,28),那么它會作業嗎?
uj5u.com熱心網友回復:
當您呼叫model.fit時train_examples,train_labels它使用默認值batch_size32。為了使其與您tf.Data一起作業,model.fit您必須批處理資料集。
你可以試試
batch_train_dataset = train_dataset.batch(32)
有關此的檔案位于url
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/434152.html
上一篇:無法在UINT8型別的TensorFlowLite張量和[[F型別的Java物件之間轉換(與TensorFlowLite型別FLOAT32兼容)
下一篇:覆寫每個時期的情節
