TensorFlow 2 Conv2D重塑/重映射1D阵列

问题描述

我有来自C#应用程序的数据,这些数据我已经展平到一维数组,并通过GRPC发送到用于服务模型的tensorflow。推理有效,因此模型具有结构化属性,并且张量流服务正常运行。

推断数据为4,000双。

一个Conv2D层的模型输入形状为100、40、1。

训练样本为4000双打和一个整数标签,可以是3个可能的值(1、2、3或-1,1等)

  • 每个功能的大小为40倍。
  • 数据样本中有100个功能
  • 标签输入是一个整数,标签/预测结果是对3个可能值进行编码的分类交叉熵。
  • Python 3是一个约束,因此只能在python中无法在C#中完成。

2个问题:

  1. 如何在python中重塑训练样本数据以符合100、40的输入?

  2. 如何将单个整数标签(同样在python中)重新映射到3码整数数组以对输出进行编码?

我很好用np.arange()创建的1,2,3 ... 40个整数数组进行演示,然后演示其中的100个。几周来,我一直在使用Jupyter笔记本电脑进行黑客入侵,试图在没有运气的情况下实现这一目标。

解决方法

第一个

import numpy as np
a = np.arange(1,4001)
print(a)
print(a.shape)
a_mat = a.reshape([40,100])
print(a_mat)
print(a.shape)

第二个用途sklearn

from sklearn.preprocessing import LabelBinarizer

lb = LabelBinarizer()
lb.fit([-1,1,-1,1])

print (lb.transform([-1,1]))
# [[1 0 0]
#  [0 1 0]
#  [0 0 1]]

print (lb.transform([1]))
# [[0 0 1]]