環境:
python = 3.8.12
tensorflow = 2.6.0.
keras = 2.6.0
所以問題是我正在嘗試訓練高度不平衡的資料,所以我嘗試將其sample_weights用作 的一部分model.fit(),但我總是遇到相同的錯誤:
ValueError: Can not squeeze dim[4], expected a dimension of 1, got 4 for '{{node categorical_crossentropy/weighted_loss/Squeeze}} = Squeeze[T=DT_FLOAT, squeeze_dims=[-1]](Cast)' with input shapes: [?,48,48,80,4].
所以這是資料的形狀,其中y_s使用tf.keras.utils.to_categorical,其中num_classes = 4:
x_train (54, 48, 48, 80)
y_train (54, 48, 48, 80, 4)
x_test (18, 48, 48, 80)
y_test (18, 48, 48, 80, 4)
x_val (18, 48, 48, 80)
y_val (18, 48, 48, 80, 4)
架構是U-NET:
inputs = Input((number_of_layers, height, width, 1))
c1 = Conv3D(filters=16, kernel_size=3, activation='relu', kernel_initializer='he_normal', padding='same')(inputs)
c1 = Dropout(0.1)(c1)
c1 = Conv3D(16, kernel_size=3, activation='relu', kernel_initializer='he_normal', padding='same')(c1)
p1 = MaxPooling3D(pool_size=2)(c1)
...............
...............
...............
outputs = Conv3D(num_classes, kernel_size=1, activation='softmax')(u9)
model = Model(inputs=[inputs], outputs=[outputs])
關于compile部分,如下所示:
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'], sample_weight_mode="temporal")
注意:我不是metrics=[‘accuracy’]用于評估,我正在使用一些IOU
問題來了,當我使用時:
from sklearn.utils.class_weight import compute_sample_weight
weights = compute_sample_weight(class_weight='balanced', y=y_train.flatten())
weights = weights.reshape(y_train.shape)
weights.shape # => (54, 48, 48, 80, 4) (same as y_train)
所以直到這里它都在作業,沒有任何錯誤,但是當我添加weights到以下資料集時:
tf_ds = tf.data.Dataset.from_tensor_slices((x_train, y_train, weights)).batch(4)
之后我嘗試運行model.fit:
model.fit(x=tf_ds, verbose=1, epochs=5, validation_data=(x_val, y_val))
我收到以下錯誤:
ValueError: Can not squeeze dim[4], expected a dimension of 1, got 4 for '{{node categorical_crossentropy/weighted_loss/Squeeze}} = Squeeze[T=DT_FLOAT, squeeze_dims=[-1]](Cast)' with input shapes: [?,48,48,80,4].
任何想法,如何解決這個問題?
uj5u.com熱心網友回復:
我假設您的標簽絕對是一種熱編碼,這就是您使用categorical_crossentropy? 如果他們不是,那么你可以sparse_categorical_crossentropy試一試。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/318300.html
