基本Tensorflow问题(输入和输出数组)

时间:2019-04-04 18:02:33

标签: python tensorflow machine-learning

我目前正在尝试使用Tensorflow。在这里,我有一个近似于根函数的示例。这仍然相对简单,因为输入和输出是“浮点”值。

  chart.xAxis.ticks()

但是如何创建一个以数组作为输入和输出的简单网络? 例如:

from tensorflow import keras
import numpy as np

model = keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])])
model.add(keras.layers.Dense(100))
model.add(keras.layers.Dense(100))
model.add(keras.layers.Dense(1))
model.compile(optimizer='sgd', loss='mean_squared_error')

xs = np.array([2.0, 5.0, 7.0, 9.0, 6.0, 4.0], dtype=float)
ys = np.array([1.41, 2.23, 2.64, 3.0, 2.44, 2.0], dtype=float)

model.fit(xs, ys, epochs=200)

print(model.predict([8.0]))

1 个答案:

答案 0 :(得分:0)

如果要输入多维数组,则需要进行一些调整。例如: 您的xs = [[1,3,4,5], [9,2,3,4]]的形状为[2,4]。更准确地说,如果将其转换为numpy数组,它将具有该形状,如下所示:

np.array([np.array(x) for x in xs])

因此,要在形状为[2,4]的数据上训练模型,首先需要设置输入形状

model = tf.keras.Sequential([layers.Dense(units=1, input_shape=[2,4])])
model.add(layers.Dense(100))
model.add(layers.Dense(4))
model.compile(optimizer='sgd', loss='mean_squared_error')

输出层有4个单位,与上一个尺寸相同。然后创建一些随机数据

xs = np.array([np.random.rand(2,4) for i in range(100)])
ys = np.array([xs[i]**2 for i in range(100)])

在这里,我们创建一个数组数组,每个数组的形状为[2,4]和相同形状的标签数组,例如,它们都是正方形。

model.fit(xs, ys, epochs=10, batch_size=1)

然后将这些数据传递到模型中,将批次大小设置为1,这意味着将一次处理形状为[2,4]的单个数组。

最后尝试使用另一个随机数组预测值。请注意,这里我们需要添加另一个维度,即批量大小。不必为1,而是可以考虑任意维度为[2,4]

进行任意数量的预测
p = np.random.rand(1,2,4)
print(model.predict(p))