Python 如何训练具有一位数输出的神经网络?

Python 如何训练具有一位数输出的神经网络?,python,tensorflow,machine-learning,keras,neural-network,Python,Tensorflow,Machine Learning,Keras,Neural Network,我的目标是用Tensorflow构建一个神经网络,它接收128维向量作为输入,并分配一个等级(0.0-5.0) 问题:无论我使用了多少个纪元,准确度都保持在0.0 这就是我目前得到的 import tensorflow as tf from tensorflow import keras import numpy as np import matplotlib.pyplot as plt import pickle #Load data frame containing training d

我的目标是用Tensorflow构建一个神经网络,它接收128维向量作为输入,并分配一个等级(0.0-5.0)

问题:无论我使用了多少个纪元,准确度都保持在0.0

这就是我目前得到的

import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
import pickle


#Load data frame containing training data
with open("label_train_vector.txt", "rb") as f: 
   df_train = pickle.load(f)


#Transform training data to correct format
feature_train_list = df_train['feature_vector'].to_list()
train_input = np.array(feature_train_list)
train_label_rating = df_train['rating'].to_numpy()/5


rating_model = keras.Sequential([
    
    keras.layers.Dense(64, activation="sigmoid", input_shape=(128,)),
    keras.layers.Dense(1, activation="sigmoid")
])

rating_model.compile(optimizer='rmsprop', loss="mse", metrics=["accuracy"])
rating_model.fit(train_input, train_label_rating, epochs=10)

这段代码的输出是

Epoch 1/10
104/104 [==============================] - 1s 992us/step - loss: 0.0280 - accuracy: 0.0000e+00
Epoch 2/10
104/104 [==============================] - 0s 979us/step - loss: 0.0140 - accuracy: 0.0000e+00
Epoch 3/10
104/104 [==============================] - 0s 994us/step - loss: 0.0111 - accuracy: 0.0000e+00
Epoch 4/10
104/104 [==============================] - 0s 929us/step - loss: 0.0093 - accuracy: 0.0000e+00
Epoch 5/10
104/104 [==============================] - 0s 934us/step - loss: 0.0082 - accuracy: 0.0000e+00
Epoch 6/10
104/104 [==============================] - 0s 938us/step - loss: 0.0080 - accuracy: 0.0000e+00
Epoch 7/10
104/104 [==============================] - 0s 929us/step - loss: 0.0079 - accuracy: 0.0000e+00
Epoch 8/10
104/104 [==============================] - 0s 936us/step - loss: 0.0074 - accuracy: 0.0000e+00
Epoch 9/10
104/104 [==============================] - 0s 930us/step - loss: 0.0074 - accuracy: 0.0000e+00
Epoch 10/10
104/104 [==============================] - 0s 923us/step - loss: 0.0073 - accuracy: 0.0000e+00
在训练过程中,准确度不会改变,但我无法找出哪里出了问题。

将tensorflow作为tf导入
从tensorflow进口keras
将numpy作为np导入
将matplotlib.pyplot作为plt导入
进口泡菜
#加载包含训练数据的数据帧
打开(“label_train_vector.txt”、“rb”)作为f:
df_系列=酸洗负荷(f)
#将训练数据转换为正确的格式
特征列=df列[‘特征向量’]。至列()
序列输入=np.数组(特征序列列表)
列车标签额定值=df列车[“额定值]。至\u numpy()/5
额定值\模型=keras.连续([
keras.layers.Dense(64,activation=“relu”,输入_shape=(128,),
keras.层。致密(1,活化=“S形”)
])
评级_model.compile(优化器='rmsprop',loss=“mse”,度量=[“准确性”])
额定值模型拟合(列车输入,列车标签额定值,历元=10)

可能更好

这不是正确的设置。尽管所有的
sigmoid
都给出了介于0和1之间的输出。您如何预测大于1的值?我通过将评分标准化为[0,1]来调整您的分数,但仍然存在相同的问题。如果这是一个回归问题(如使用
loss=“mse”
所暗示的),则准确性毫无意义,
activation=“sigmoid”
是错误的。此外,对于中间层,我们不使用
sigmoid
激活-