【发布时间】:2020-06-18 11:18:23
【问题描述】:
我正在处理这个项目,但似乎无法弄清楚为什么会出现此错误。我已经对训练输入和输出进行了硬编码,这是我的全部代码。我是编写 AI 代码的新手(我是一名电气工程专业的学生研究员),所以如果它看起来很糟糕,我很抱歉 :(。
from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense, Flatten
import numpy as np
from numpy import exp, array, random, dot
import cmath
###train_input = [input power, tl12, tl4, rout, smith_imp]###
training_set_inputs = X = array([
[0.001, (57.787+9.323j), (39.7-102.789j), 2000, (49.306+3.343j)],
[0.001, (57.787+9.323j), (25.003-108.861j), 4000, (40.055+23.539j)],
[0.001, (57.787+9.323j), (13.020-111.297j), 10000, (34.116+28.402j)],
[1*10**-4, (57.814+9.237j), (23.708-102.443j), 2000, (49.556+22.397j)],
[1*10**-4, (57.814+9.237j), (16.712-104.013j), 4000, (40.966+38.298j)],
[1*10**-4, (57.814+9.237j), (10.482-105.169j), 10000, (25.069+48.663j)],
[1*10**-5, (57.814+9.237j), (11.363-102.341j), 2000, (38.133+49.859j)],
[1*10**-5, (57.814+9.237j), (10.285-102.579j), 4000, (31.647+54.320j)],
[1*10**-5, (57.814+9.237j), (8.829-102.908j), 10000, (23.171+58.023j)]
])
training_set_outputs = y = array([
[1.2*10**-12, 18*10**-9],
[2.7*10**-12, 22*10**-9],
[3.9*10**-12, 20*10**-9],
[1.2*10**-12, 18*10**-9],
[2.7*10**-12, 22*10**-9],
[3.9*10**-12, 20*10**-9],
[1.2*10**-12, 18*10**-9],
[2.7*10**-12, 22*10**-9],
[3.9*10**-12, 20*10**-9]
]).T
#Define the Model
model = Sequential()
model.add(Dense(10, input_shape=(9, 5)))
#Compile the Model
opt = tf.keras.optimizers.SGD(learning_rate=0.01, momentum=0.9)
model.compile(optimizer=opt, loss='binary_crossentropy', metrics=['accuracy']) #binary classification
#Fit the Model
model.fit(X, y, epochs=100, batch_size=32) #can add verbose=0 if you want to turn off training outputs
#Evaluate the Model
loss = model.Evaluate(X, y, verbose=0)
#Make a prediction
yhat = model.predict(X)
#Goal input
#array = [input power, tl12, tl4, rout, (50+0j)]
有人有什么建议吗?如果您也看到任何其他错误,请告诉我:) 提前非常感谢您!
【问题讨论】:
-
除了错误和硬编码之外,我不确定 keras 是否可以处理复数输入。相反,您可以将特征的实部和虚部视为两个独立的特征。
-
@akilat90 好的,感谢您的建议。那是我最初的方法,所以我会回到那个。从那里我可能仍然有同样的问题。
-
您可以将实部和虚部的系数分成两个不同的特征。这样,您最终将在输入中获得总共 8 个特征。此外,在训练网络以获得更好的结果之前,您必须对所有内容进行规范化,如果您的目标是预测输出变量中的这些值,那么准确度不是正确的指标。优化器和损失函数也是如此。数据集太小了。祝你好运!
-
嗨@nemanjaone,你能给我更多关于你的问题的细节吗?我似乎无法复制错误。
标签: python numpy tensorflow machine-learning keras