小编tod*_*day的帖子

在 keras 中创建一个神经网络来将两个输入整数相乘

我正在使用 Python v2.7(Tensorflow 后端)中的 Keras v2.0.8 创建小型神经网络来计算简单的算术函数(加、减、乘等),并且有点困惑。下面的代码是我的网络,它生成一个带有相应标签的整数随机训练数据集(两个输入加在一起):

def create_data(low, high, examples):

    train_data = []
    label_data = []

    a = np.random.randint(low=low, high=high, size=examples, dtype='int')
    b = np.random.randint(low=low, high=high, size=examples, dtype='int')

    for i in range(0, examples):
        train_data.append([a[i], b[i]])
        label_data.append((a[i] + b[i]))

    train_data = np.array(train_data)
    label_data = np.array(label_data)

    return train_data, label_data

X, y = create_data(0, 500, 10000)

model = Sequential()
model.add(Dense(3, input_dim=2))
model.add(Dense(5, activation='relu'))
model.add(Dense(3, activation='relu'))
model.add(Dense(5, activation='relu'))
model.add(Dense(1, activation='relu'))

model.compile(optimizer='adam', loss='mean_squared_error', metrics=['accuracy'])
model.fit(X, y, epochs=10, batch_size=10)

test_data, _ = create_data(0, 500, 10) …
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network keras tensorflow

6
推荐指数
0
解决办法
2302
查看次数

具有预先训练的卷积基数的keras模型中损失函数的奇异行为

我正在尝试在Keras中创建模型,以便根据图片进行数值预测。我的模型具有densitynet121卷积基础,顶部还有几个附加层。除最后两个图层外的所有图层均设置为layer.trainable = False。我的损失是均方误差,因为这是一项回归任务。在训练期间,我得到loss: ~3,而对同一批数据的评估给出loss: ~30

model.fit(x=dat[0],y=dat[1],batch_size=32)
Run Code Online (Sandbox Code Playgroud)

时代1/1 32/32 [==============================]-0s 11ms / step-损耗:2.5571

model.evaluate(x=dat[0],y=dat[1])
Run Code Online (Sandbox Code Playgroud)

32/32 [==============================]-2s 59ms / step 29.276123046875

在训练和评估期间,我提供了完全相同的32张图片。我还使用的预测值计算了损失y_pred=model.predict(dat[0]),然后使用numpy构造了均方误差。结果与我从评估中得到的结果相同(即29.276123 ...)。

有人建议这种行为可能是由于BatchNormalization卷积基础中的层(有关github的讨论)。当然,BatchNormalization我模型中的所有图层也都已设置layer.trainable=False为。也许有人遇到了这个问题并想出了解决方案?

python deep-learning keras tensorflow transfer-learning

6
推荐指数
1
解决办法
2690
查看次数

Keras的initial_epoch是什么意思?

关于initial_epoch价值fitfit_generator方法,我有点困惑.这是文档:

initial_epoch:整数.开始训练的时期(对于恢复之前的训练运行很有用).

我明白,如果你从头开始训练,它就没用了.如果您训练了数据集并希望提高准确度或其他值(如果我错了就纠正我),这很有用.但我不确定它到底是做什么的.

毕竟,我有两个问题:

  1. 它的initial_epoch作用和用途是什么?
  2. initial_epoch什么时候可以使用?

    • 当我更改数据集时?
    • 当我改变学习率,优化器或丢失功能?
    • 他们都?

machine-learning deep-learning keras

6
推荐指数
2
解决办法
3443
查看次数

Tensor'对象没有属性'lower'

我正在用14个新类对MobileNet进行微调。当我通过以下方式添加新图层时:

x=mobile.layers[-6].output
x=Flatten(x)
predictions = Dense(14, activation='softmax')(x)
model = Model(inputs=mobile.input, outputs=predictions)
Run Code Online (Sandbox Code Playgroud)

我得到错误:

'Tensor' object has no attribute 'lower'
Run Code Online (Sandbox Code Playgroud)

还使用:

model.compile(Adam(lr=.0001), loss='categorical_crossentropy', metrics=['accuracy'])
model.fit_generator(train_batches, steps_per_epoch=18,
                validation_data=valid_batches, validation_steps=3, epochs=60, verbose=2)
Run Code Online (Sandbox Code Playgroud)

我得到错误:

Error when checking target: expected dense_1 to have 4 dimensions, but got array with shape (10, 14)
Run Code Online (Sandbox Code Playgroud)

什么lower意思 我看到了其他微调脚本,除了模型名称(在这种情况下为X)之外,没有其他参数。

python conv-neural-network keras tensorflow keras-layer

6
推荐指数
1
解决办法
3930
查看次数

如何在 Keras/TensorFlow 的自定义层中应用内核正则化?

请考虑 TensorFlow 教程中的以下自定义层代码:

class MyDenseLayer(tf.keras.layers.Layer):
  def __init__(self, num_outputs):
    super(MyDenseLayer, self).__init__()
    self.num_outputs = num_outputs

  def build(self, input_shape):
    self.kernel = self.add_weight("kernel",
                                  shape=[int(input_shape[-1]),
                                         self.num_outputs])

  def call(self, input):
    return tf.matmul(input, self.kernel)
Run Code Online (Sandbox Code Playgroud)

tf.keras.regularizers.L1如何对自定义层的参数应用任何预定义的正则化(例如)或自定义正则化?

python machine-learning regularized keras tensorflow

6
推荐指数
1
解决办法
3473
查看次数

Keras:在特定层之后停止渐变

假设您有Keras NN模型,如何在特定层之后的反向传播中停止梯度?


即,如果我们有一个带有两个输出的模型:

input_layer = Input(shape=(10,10,3))

x = Convolution2D(...)(input_layer)
x = Activation('relu')(x)

x = Flatten()(x)

x_1 = Dense(64)(x)
x_1 = Dense(32)(x_1)
x_1 = Dense(2)(x_1)

x_2 = Dense(64)(x)
x_2 = Dense(32)(x_2)
x_2 = Dense(2)(x_2)

model = Model(inputs=input_layer, outputs=[x_1, x_2])
Run Code Online (Sandbox Code Playgroud)

如何x_1x_1 = Dense(64)(x)层之后停止输出的梯度,以免在卷积层的权重更新中不计入它?


根据在keras的特定层停止渐变反向道具的答案,我会在x_1致密层之前添加一个lambda 层,但我不确定:

x_1 = Dense(64)(x)
x_1_stop_grad = Lambda(lambda x: K.stop_gradient(x))(x_1)
x_1 = Dense(32)(x_1)
x_1 = Dense(2)(x_1)
Run Code Online (Sandbox Code Playgroud)

我是否必须第一个致密层之前之后添加lambda x_1层?

keras

5
推荐指数
1
解决办法
2040
查看次数

Keras高损耗,不会随着每个时代而减少

我正在学习NN和Keras。我的测试数据是这样的:

Result, HomeWinPossibility, DrawPossibility, AwayWinPossibility
[['AwayWin' 0.41 0.28 0.31]
 ['HomeWin' 0.55 0.25 0.2]
 ['AwayWin' 0.17 0.21 0.62]
 .....
Run Code Online (Sandbox Code Playgroud)

这是我的模型:

Result, HomeWinPossibility, DrawPossibility, AwayWinPossibility
[['AwayWin' 0.41 0.28 0.31]
 ['HomeWin' 0.55 0.25 0.2]
 ['AwayWin' 0.17 0.21 0.62]
 .....
Run Code Online (Sandbox Code Playgroud)

fit的输出为:

Epoch 1/100
190/190 [==============================] - 1s 3ms/step - loss: 0.9151 - acc: 0.5737
Epoch 2/100
190/190 [==============================] - 1s 3ms/step - loss: 0.9181 - acc: 0.5474
Epoch 3/100
190/190 [==============================] - 1s 3ms/step - loss: 0.9111 - acc: 0.5526
Epoch 100/100
190/190 [==============================] …
Run Code Online (Sandbox Code Playgroud)

neural-network keras

5
推荐指数
1
解决办法
3437
查看次数

处理 Keras 中 ImageDataGenerator.flow_from_directory 中无效/损坏的图像文件

我在 Keras 中使用 Python 并运行ImageDataGenerator和使用flow_from_directory. 我有一些有问题的图像文件,所以我可以使用数据生成器来处理读取错误吗?

我在一小部分图像上收到了一些“无效的 jpg 文件”,并希望在没有我的代码崩溃的情况下处理它。

python image machine-learning deep-learning keras

5
推荐指数
1
解决办法
1812
查看次数

如何合并数值和嵌入顺序模型以处理RNN中的类别

我想为我的分类特征构建一个带有嵌入的LSTM模型。我目前具有数值特征和一些分类特征,例如位置,pd.get_dummies()由于计算复杂性,因此无法进行一次热编码,这是我本来打算这样做的。

我们来看一个例子:

样本数据

data = {
    'user_id': [1,1,1,1,2,2,3],
    'time_on_page': [10,20,30,20,15,10,40],
    'location': ['London','New York', 'London', 'New York', 'Hong Kong', 'Tokyo', 'Madrid'],
    'page_id': [5,4,2,1,6,8,2]
}
d = pd.DataFrame(data=data)
print(d)
   user_id  time_on_page   location  page_id
0        1            10     London        5
1        1            20   New York        4
2        1            30     London        2
3        1            20   New York        1
4        2            15  Hong Kong        6
5        2            10      Tokyo        8
6        3            40     Madrid        2
Run Code Online (Sandbox Code Playgroud)

让我们看看访问网站的人。我正在跟踪诸如页面停留时间等数字数据。分类数据包括:位置(超过1000个唯一性),Page_id(大于1000个唯一性),Author_id(超过100个唯一性)。最简单的解决方案是对所有内容进行一次热编码,然后将其放入具有可变序列长度的LSTM中,每个时间步对应于不同的页面视图。

上面的DataFrame将生成7个训练样本,其序列长度可变。例如,user_id=2我将有2个训练样本:

[ ROW_INDEX_4 ] and [ …
Run Code Online (Sandbox Code Playgroud)

python machine-learning lstm keras tensorflow

5
推荐指数
1
解决办法
1301
查看次数

Keras 中的嵌入层如何处理浮点输入值?

x(64, 1)使用 随机创建的维度向量tf.random.uniform((BATCH_SIZE, 1)),其中BATCH_SIZE = 64.

随机初始化如下所示:

tf.Tensor(
[[0.76922464]
 [0.7928164 ]
 [0.91224647]
 [0.41210544]
 [0.33040464]
 [0.20977008]
 [0.96211743]
 [0.59516513]
 [0.67317   ]
 [0.7600033 ]
 [0.93105805]
 [0.55348516]
 [0.50683343]
 [0.7563635 ]
 [0.06255531]
 [0.93398154]
 [0.5622641 ]
 [0.9913852 ]
 [0.3019762 ]
 [0.519048  ]
 [0.57998526]
 [0.21162748]
 [0.9783536 ]
 [0.38307965]
 [0.6527189 ]
 [0.8094288 ]
 [0.97980523]
 [0.5955998 ]
 [0.7002481 ]
 [0.6879872 ]
 [0.50365186]
 [0.57166266]
 [0.97805905]
 [0.458856  ]
 [0.3485204 ]
 [0.29394794]
 [0.19313121]
 [0.29782188]
 [0.45194447]
 [0.49442303]
 [0.04192603]
 [0.26818407]
 [0.822567  ]
 [0.8573874 ]
 [0.15510845]
 [0.76052403]
 [0.4066763 …
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow keras-layer tf.keras

5
推荐指数
1
解决办法
2670
查看次数