【问题标题】:Convert list of floats to NumPy array将浮点数列表转换为 NumPy 数组
【发布时间】:2017-06-06 20:07:32
【问题描述】:

我正在使用神经网络,我想在 FPGA 上实现它。我有一个在 MNIST 上工作的代码,我想使用 float32 获得初始权重,然后在 FPGA 上用定点重新训练权重。

我正在 python 中运行我的模拟。我正在寻找一种方法来进行这种转换

from keras.datasets import mnist
from keras.layers import Dense
from keras.models import Sequential
from keras.layers import Dropout
from keras.utils import np_utils
import matplotlib.pyplot as plt
(x, y), (X, Y) = mnist.load_data()

num = x.shape[1] * x.shape[2]
x = x.reshape(x.shape[0],x.shape[1]*x.shape[2]).astype('float32')
X = X.reshape(X.shape[0],X.shape[1]*X.shape[2]).astype('float32')

x = x/255
X = X/255

y = np_utils.to_categorical(y)
Y = np_utils.to_categorical(Y)

classes = y.shape[1]

def calc():
    model = Sequential()
    model.add(Dense(num, input_dim = num, init = 'normal', activation = 'relu'))
    model.add(Dense(classes, init = 'normal', activation = 'softmax'))
    model.compile(loss = 'categorical_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
    return model

model = calc()
model.fit(x, y, validation_data=(X, Y), nb_epoch=10, batch_size=200,
    verbose=2)
scores = model.evaluate(X, Y, verbose=0)
print("Accuracy: ", scores)

【问题讨论】:

  • 我想把每一层的权重转换成定点表示,这样就可以重新训练了
  • 这个列表是什么变量?真的是清单吗?还是numpy数组?还是一些专门的kereas 类型?
  • “定点”是什么意思?
  • @hpaulj,输出是一个numpy数组
  • @VivekKumar ,我的意思是我的小数部分准确地说是 16 位,整数部分是 4 位。我不想使用浮点小数点。

标签: python arrays numpy floating-point


【解决方案1】:

将您的列表传递给 np.arraydtype=np.float32 以指定 32 位浮点数作为数据类型:

np.array(your_list, dtype=np.float32)

【讨论】:

  • 我想将每一层的权重转换为定点表示,以便对其进行重新训练。我认为 float32 不会满足我的要求。我需要一个定点表示。
  • @AbhinavGoel 好的,然后试试上面的。
猜你喜欢
  • 2019-10-31
  • 2018-09-25
  • 2020-05-14
  • 1970-01-01
  • 1970-01-01
  • 2017-03-08
  • 1970-01-01
  • 2019-05-10
  • 1970-01-01
相关资源
最近更新 更多