keras NaN拟合参数损失

6tqwzwtp  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(128)
import pyreadr
from sklearn.model_selection import train_test_split
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
import numpy as np
from sklearn import preprocessing

# сбор тестовых данных в массивы
result = pyreadr.read_r("/home/ignat/Downloads/Telegram Desktop/TMS_coefficients.RData")
dataset = []
values = []

for i in range(694):
    dataset.append((result['tms.coef']['bs0'][i],
                    result['tms.coef']['bs'][i],
                    result['tms.coef']['bi0'][i],
                    result['tms.coef']['bi'][i],
                    result['tms.coef']['b0'][i],
                    result['tms.coef']['b1'][i],
                    result['tms.coef']['b2'][i],
                    result['tms.coef']['a0'][i],
                    result['tms.coef']['a1'][i]))

    values.append([0.0 if result['tms.coef']['Y'][i] == "НС"
                   else 1.0 if result['tms.coef']['Y'][i] == "AD"
                   else 2.0 if result['tms.coef']['Y'][i] == "DLB"
                   else 3.0])

dataset = np.array(dataset, dtype="float")
values = np.array(values, dtype="float")

print(dataset[0])
print(values[0])
(trainX, testX, trainY, testY) = train_test_split(dataset,
    values, test_size=0.25, random_state=42)

# модель нейронки
visible = layers.Input(shape=(9,))
drop1 = layers.Dropout(0.5, input_shape=(9,))(visible)
hidden1 = layers.Dense(32, activation="relu")(drop1)
drop2 = layers.Dropout(0.5, input_shape=(9,))(hidden1)
output = layers.Dense(1, activation="relu")(drop2)
model = tf.keras.Model(inputs=visible, outputs=output)

# компиляция
model.compile(optimizer=tf.keras.optimizers.Adam(0.01),
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'],)

# обучение
model.fit(trainX, trainY, validation_data=(testX, testY), epochs=100)

model.save('my_model')

for i in range(1, 10):
    print(model.predict(dataset), values[-i])

我有烦恼-南失去
数据集[i]示例:1999年12月15日,在纽约举行的第一次世界卫生大会上,卫生部宣布了一项新的计划,即在1999年12月15日之前,在纽约举行一次世界卫生大会,并于1999年12月15日举行一次世界卫生大会。
值[i]示例:1.
我请求您的帮助,我调试只是这一段代码。我谷歌的问题很,因为我不会看到抽象的指令

xytpbqjk

xytpbqjk1#

我认为这里的主要问题可能是......您选择的损失函数。通常categorical_crossentropy用于多类问题。由于您在输出层中只有一个神经元,这可能会导致一些问题。因此,如果您试图进行分类,您可能需要将损失函数切换为:

# компиляция
model.compile(optimizer=tf.keras.optimizers.Adam(0.01),
              loss='binary_crossentropy',
              metrics=['accuracy'],)

相关问题